Sto cercando di utilizzare la classe std::thread
del C++ 11 per eseguire una funzione membro di una classe da eseguire in parallelo.Come eseguire una funzione membro della classe in un thread separato utilizzando la classe thread C++ 11?
codice del file di intestazione è simile a:
class SomeClass {
vector<int> classVector;
void threadFunction(bool arg1, bool arg2);
public:
void otherFunction();
};
Il file cpp è simile a:
void SomeClass::threadFunction(bool arg1, bool arg2) {
//thread task
}
void SomeClass::otherFunction() {
thread t1(&SomeClass::threadFunction, arg1, arg2, *this);
t1.join();
}
Sto usando Xcode 4.6.1 con Mac OS X 10.8.3. Il compilatore che sto usando è Apple LLVM 4.2 fornito con Xcode.
Il codice sopra riportato non funziona. L'errore del compilatore dice che "Attempted to use deleted function"
.
Sulla linea di creazione del filo mostra il seguente massaggio.
In instantiation of function template specialization 'std::__1::thread::thread<void (SomeClass::*)(bool, bool), bool &, bool &, FETD2DSolver &, void>' requested here
Sono nuovo in C++ 11 e nella classe thread. Qualcuno potrebbe aiutarmi?
Vale la pena sottolineare che il codice PO è inutile se lui chiama '.join()' immediatamente. –
Grazie mille funziona. –