初始化C++线程并稍后运行

Luc*_*cas 1 c++ multithreading c++11

我假设这个问题很简单.我想首先将一个线程定义为一个类的成员变量,然后在另一个函数中启动该线程.

例如:

头文件:

#include<thread>
class Foo{
public:
   void threaded_method();
   void start_thread();
private:
   std::thread m_thread;      
};
Run Code Online (Sandbox Code Playgroud)

Cpp文件:

void Foo::start_thread(){
    m_thread = std::thread(threaded_method);
}
Run Code Online (Sandbox Code Playgroud)

虽然以上不起作用,但想法?

Fra*_*san 6

要将成员函数传递给线程,还必须传递要在其上执行该函数的实例.

void Foo::start_thread(){
    m_thread = std::thread(&Foo::threaded_method, this);
}
Run Code Online (Sandbox Code Playgroud)