如果掉一個類別的成員函數,大概是這樣。
clientThread = std::thread(&Client::sendMessage,“message”);
但如果希望這個類別的特定對象,執行這個操作,怎麼處理?
某草草2017-05-16 13:24:21
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
怪我咯2017-05-16 13:24:21
參考C plus plus
雷雷參數
fn
指向函數的指標、指向成員的指標或任何類型的可移動構造的函數物件(即,其類別
定義了operator()的對象,包括閉包和函數物件)。
回傳值(如果有)將被忽略。
args...
傳遞給 fn 呼叫的參數(如果有)。它們的類型應該是可移動構造的。 如果 fn 是成員指針,第一個參數應是定義該成員的物件、引用或指向它的指針)。
x
狀態被移到建構物件的執行緒物件。
類似std::thread(&C::increase_member,std::ref(bar),1000)