我有一個類main.cpp
以及MyClass.cpp
。如何在C++中創建基本線程
在main.cpp
,我有很多代碼。儘管如此,我創建了一個MyClass
對象,然後我想要啓動MyClass
中的一個線程。我希望它調用一個函數Run()
並使函數在main.cpp
的其餘函數運行的同時運行。
在C++中最簡單的方法是什麼?我從來沒有在C++中進行過線程化,但是我已經在Java中完成了。
我想避免使用外部軟件包,如果可能的話。
我有一個類main.cpp
以及MyClass.cpp
。如何在C++中創建基本線程
在main.cpp
,我有很多代碼。儘管如此,我創建了一個MyClass
對象,然後我想要啓動MyClass
中的一個線程。我希望它調用一個函數Run()
並使函數在main.cpp
的其餘函數運行的同時運行。
在C++中最簡單的方法是什麼?我從來沒有在C++中進行過線程化,但是我已經在Java中完成了。
我想避免使用外部軟件包,如果可能的話。
使用標準C++:
#include <future>
int main() {
MyClass mc;
auto future = std::async(MyClass::Run,&mc);
...
}
C++語言本身沒有任何線程*的概念。您當然可以使用C++編寫多線程程序,但它將涉及使用特定於平臺的線程庫。例如,您可以在Linux系統上使用「pthreads」庫。你的目標平臺是什麼? *在新的C++ 11規範中添加的擴展添加了對線程的標準化支持,但許多編譯器和標準庫尚未實現此版本的標準。
最簡單的方法是使用boost thread庫。
#include <boost/thread.hpp>
#include <boost/bind.hpp>
...
int main()
{
...
MyClass mc;
boost::thread bt(boost::bind(MyClass::Run, &mc));
...
bt.join();
...
}
您是否使用一個版本的C++,包括原生多線程?如果不是,您定位的是哪個平臺? (我對你的強烈建議是使用[Boost](http://boost.org)。是的,它是一個外部軟件包,但是它是可移植的,製作精良的,並且導致更好的代碼。) – 2012-04-13 00:09:24