syntax - C++11 thread调用对象的成员函数
迷茫
迷茫 2017-05-16 13:22:21
0
2
1045

如果掉一个类的成员函数,大概是这样。

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)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板