如果掉一个类的成员函数,大概是这样。
clientThread = std::thread(&Client::sendMessage,“message”);
但如果希望这个类的特定对象,执行这个操作,怎么处理?
业精于勤,荒于嬉;行成于思,毁于随。
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)
std::thread(&C::increase_member,std::ref(bar),1000)
std::thread 调用类的成员函数需要传递类的一个对象作为参数:
如果是在类的成员函数中处理thread,传入 this 即可,如:
参考:stackoverflow
参考C plus plus
雷雷类似这样
std::thread(&C::increase_member,std::ref(bar),1000)