簡體   English   中英

C ++在Boost線程中調用成員函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM