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