Wie führe ich eine Klassenmitgliedsfunktion in einem separaten Thread mit der Thread-Klasse C ++ 11 aus?
Ich versuche, die C ++ 11 zu verwendenstd::thread
class, um eine Mitgliedsfunktion einer Klasse auszuführen, die parallel ausgeführt werden soll.
Der Code der Header-Datei ähnelt:
class SomeClass {
vector<int> classVector;
void threadFunction(bool arg1, bool arg2);
public:
void otherFunction();
};
Die cpp-Datei ähnelt:
void SomeClass::threadFunction(bool arg1, bool arg2) {
//thread task
}
void SomeClass::otherFunction() {
thread t1(&SomeClass::threadFunction, arg1, arg2, *this);
t1.join();
}
Ich verwende Xcode 4.6.1 unter Mac OS X 10.8.3. Der von mir verwendete Compiler ist Apple LLVM 4.2, das mit dem Xcode geliefert wurde.
Der obige Code funktioniert nicht. Der Compiler-Fehler besagt das"Attempted to use deleted function"
.
In der Zeile der Thread-Erstellung wird die folgende Massage angezeigt.
In instantiation of function template specialization 'std::__1::thread::thread<void (SomeClass::*)(bool, bool), bool &, bool &, FETD2DSolver &, void>' requested here
Ich bin neu in C ++ 11 und der Thread-Klasse. Könnte mir jemand helfen?