【问题标题】:C++: Instantiate boost::thread in headerC++:在标头中实例化 boost::thread
【发布时间】:2013-11-07 16:27:53
【问题描述】:

我试图从一个类被实例化的那一刻开始运行一个线程。

该类有一个头文件:

#include <boost/thread.hpp>
....
class test
{
public:
....
boost::thread worker(doWork); --->how should this be declared?
...
}

并且在类方法中,我实现了应该在线程“worker”中调用的函数doWork()。

...
void doWork()
{
while(1)
{
std::cout<<"hello";
}
}
....

只要实例化了“test”类,我应该在哪里实例化 boost::thread 来运行线程?

谢谢

【问题讨论】:

    标签: c++ multithreading boost constructor boost-thread


    【解决方案1】:

    你可以在构造函数中初始化它:

    test::test() : worker(doWork) {}
    

    虽然你暗示它可能是一个成员函数;在这种情况下,您需要将其绑定到对象以调用成员:

    worker([this]{doWork();})                // C++11
    worker(boost::bind(&test::doWork, this)) // Old-school
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-12
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多