我有一个班级main.cpp
,以及MyClass.cpp
。
在main.cpp
中,我有很多代码。在顶部,我创建了一个MyClass
对象,然后我想启动MyClass
中的一个线程。我希望它调用一个函数Run()
并让函数在main.cpp
中的其余函数运行的同时运行。
在C ++中执行此操作的最简单方法是什么。我从未在C ++中进行过线程,但是我在Java中已经完成了。
我想避免使用外部包等,如果可能的话。
答案 0 :(得分:4)
最简单的方法是使用boost thread库。
#include <boost/thread.hpp>
#include <boost/bind.hpp>
...
int main()
{
...
MyClass mc;
boost::thread bt(boost::bind(MyClass::Run, &mc));
...
bt.join();
...
}
答案 1 :(得分:2)
C ++语言本身没有任何线程概念*。您当然可以用C ++编写多线程程序,但它将涉及使用特定于平台的线程库。例如,您可以在Linux系统上使用“pthreads”库。你的目标平台是什么?
*新C ++ 11规范中添加的扩展为线程添加了标准化支持,但许多编译器和标准库尚未实现此版本的标准。
答案 2 :(得分:1)
使用标准C ++:
#include <future>
int main() {
MyClass mc;
auto future = std::async(MyClass::Run,&mc);
...
}