[英]C++ Calling member function in boost thread
所以我想在增強線程中啟動成員函數Open()
:
.HPP
Class MyClass{
public:
int Open();
private:
void handle_thread();
};
的.cpp
int MyClass::Open(){
boost::thread t(handle_thread);
t.join();
return 0;
}
void MyClass::handle_thread(){
//do stuff
}
test.cpp
int main(){
MyClass* testObject = new MyClass()
testObject.Open();
}
這會導致編譯器錯誤。
error: no matching function for call to 'boost::thread::thread(<unresolved overloaded function type>)'
我看到Open()不知道在哪個對象上調用handle_thread。 但是我不知道什么是正確的語法。
handle_thread
是成員函數,必須這樣調用:
int MyClass::Open(){
boost::thread t(&MyClass::handle_thread, this);
...
}
請注意,如果您之后立即join
線程,則功能將被阻塞。 除了handle_thread
實際上在其他線程上運行之外,該行為與單線程應用程序的行為相同。 但是不會有線程的交織(即沒有並行性)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.