如果掉一个类的成员函数,大概是这样。
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)