如何在C ++中创建基本线程

时间:2012-04-13 00:08:00

标签: c++ multithreading

我有一个班级main.cpp,以及MyClass.cpp

main.cpp中,我有很多代码。在顶部,我创建了一个MyClass对象,然后我想启动MyClass中的一个线程。我希望它调用一个函数Run()并让函数在main.cpp中的其余函数运行的同时运行。

在C ++中执行此操作的最简单方法是什么。我从未在C ++中进行过线程,但是我在Java中已经完成了。

我想避免使用外部包等,如果可能的话。

3 个答案:

答案 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);
    ...
}