syntax - C++11 thread呼叫物件的成員函數
迷茫
迷茫 2017-05-16 13:22:21
0
2
984

如果掉一個類別的成員函數,大概是這樣。

clientThread = std::thread(&Client::sendMessage,“message”);

但如果希望這個類別的特定對象,執行這個操作,怎麼處理?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(2)
某草草

std::thread 呼叫類別的成員函數需要傳遞類別的一個物件作為參數:

#include <thread>
#include <iostream>

class bar {
public:
  void foo() {
    std::cout << "hello from member function" << std::endl;
  }
};

int main()
{
  std::thread t(&bar::foo, bar());
  t.join();
}

如果是在類別的成員函數中處理thread,傳入 this 即可,如:

std::thread spawn() {
    return std::thread(&blub::test, this);
  }

參考:stackoverflow

刘奇

參考C plus plus

參數
fn
指向函數的指標、指向成員的指標或任何類型的可移動構造的函數物件(即,其類別
定義了operator()的對象,包括閉包和函數物件)。
回傳值(如果有)將被忽略。
args...
傳遞給 fn 呼叫的參數(如果有)。它們的類型應該是可移動構造的。 如果 fn 是成員指針,第一個參數應是定義該成員的物件、引用或指向它的指針)。
x
狀態被移到建構物件的執行緒物件。

雷雷

類似std::thread(&C::increase_member,std::ref(bar),1000)

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!