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

C++ 初始化C++;线程并稍后运行,c++,multithreading,c++11,C++,Multithreading,C++11,我假设这个问题有一个简单的答案。我想首先将线程定义为类的成员变量,然后在不同的函数中启动该线程 void Foo::start_thread(){ m_thread = std::thread(&Foo::threaded_method, this); } void Foo::start_thread(){ m_thread = std::thread(&Foo::threaded_method, this); } 例如: 头文件: #include<t

我假设这个问题有一个简单的答案。我想首先将线程定义为类的成员变量,然后在不同的函数中启动该线程

void Foo::start_thread(){
    m_thread = std::thread(&Foo::threaded_method, this);
}
void Foo::start_thread(){
    m_thread = std::thread(&Foo::threaded_method, this);
}
例如:

头文件:

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

尽管上述方法不起作用,但如果要将成员函数传递给线程,还必须传递一个实例来执行该函数

void Foo::start_thread(){
    m_thread = std::thread(&Foo::threaded_method, this);
}
void Foo::start_thread(){
    m_thread = std::thread(&Foo::threaded_method, this);
}

在这些页面中找到了一个很好的示例:

我忘记传递对成员函数的有效引用

void Foo::start_thread(){
    m_thread = std::thread(&Foo::threaded_method, this);
}
void Foo::start_thread(){
    m_thread = std::thread(&Foo::threaded_method, this);
}

应该有用。我喜欢在我发布问题后马上找到答案…

您也可以简单地更改您的体系结构。例如,有一个列表,其中包含要执行的函数。然后通过多线程处理您想要运行的所有函数。

从文档中我可以看到,这应该是可行的。你说的“不起作用”到底是什么意思?您是否收到错误消息?@JoachimPileborg-线程应该是可移动分配的。
threaded\u方法
是一个成员函数,不能以这种方式传递给线程。从另一个实例分配
m_线程
是非常好的,应该可以做您想做的事情。谢谢!在我贴出问题后不久就意识到了答案。我以前也这么做过。从现在开始,抵制发布问题的诱惑,首先在谷歌上彻底搜索它,然后再花一分钟在你的头脑中重新评估它。你会很容易地回答大部分问题。