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_线程
是非常好的,应该可以做您想做的事情。谢谢!在我贴出问题后不久就意识到了答案。我以前也这么做过。从现在开始,抵制发布问题的诱惑,首先在谷歌上彻底搜索它,然后再花一分钟在你的头脑中重新评估它。你会很容易地回答大部分问题。