Próbuję użyć klasy C++ 11 std::thread
do uruchomienia funkcji składowej klasy, aby wykonać ją równolegle.Jak wykonać funkcję członka klasy w osobnym wątku przy użyciu klasy wątków C++ 11?
kod pliku nagłówka jest podobny do:
class SomeClass {
vector<int> classVector;
void threadFunction(bool arg1, bool arg2);
public:
void otherFunction();
};
plik cpp jest podobny do:
void SomeClass::threadFunction(bool arg1, bool arg2) {
//thread task
}
void SomeClass::otherFunction() {
thread t1(&SomeClass::threadFunction, arg1, arg2, *this);
t1.join();
}
używam Xcode 4.6.1 pod Mac OS X 10.8.3. Używany kompilator to Apple LLVM 4.2, który jest dostarczany z Xcode.
Powyższy kod nie działa. Błąd kompilatora mówi, że "Attempted to use deleted function"
.
Na linii tworzenia wątku pokazuje następujący masaż.
In instantiation of function template specialization 'std::__1::thread::thread<void (SomeClass::*)(bool, bool), bool &, bool &, FETD2DSolver &, void>' requested here
Jestem nowy w C++ 11 i klasie wątków. Czy ktoś mógłby mi pomóc?
Warto podkreślić, że kod OP jest bezużyteczny, jeśli nazywa '.join()' natychmiast. –
Wielkie dzięki. –