2

我有课main.cpp,还有MyClass.cpp

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

在 C++ 中执行此操作的最简单方法是什么。我从来没有在 C++ 中完成过线程,但是我在 Java 中这样做过。

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

4

3 回答 3

4

最简单的方法是使用boost 线程库。

#include <boost/thread.hpp>
#include <boost/bind.hpp>

...

int main()
{
  ...
  MyClass mc;
  boost::thread bt(boost::bind(MyClass::Run, &mc));
  ...
  bt.join();
  ...
 }
于 2012-04-13T00:15:05.790 回答
2

C++ 语言本身没有任何线程* 的概念。您当然可以用 C++ 编写多线程程序,但它会涉及使用特定于平台的线程库。例如,您可以在 Linux 系统上使用“pthreads”库。你的目标平台是什么?

*新 C++11 规范中添加的扩展增加了对线程的标准化支持,但许多编译器和标准库尚未实现此版本的标准。

于 2012-04-13T00:13:39.053 回答
1

使用标准 C++:

#include <future>

int main() {
    MyClass mc;
    auto future = std::async(MyClass::Run,&mc);
    ...
}
于 2012-04-13T00:20:53.070 回答