2012-04-13 23 views
2

我有一個類main.cpp以及MyClass.cpp如何在C++中創建基本線程

main.cpp,我有很多代碼。儘管如此,我創建了一個MyClass對象,然後我想要啓動MyClass中的一個線程。我希望它調用一個函數Run()並使函數在main.cpp的其餘函數運行的同時運行。

在C++中最簡單的方法是什麼?我從來沒有在C++中進行過線程化,但是我已經在Java中完成了。

我想避免使用外部軟件包,如果可能的話。

+5

您是否使用一個版本的C++,包括原生多線程?如果不是,您定位的是哪個平臺? (我對你的強烈建議是使用[Boost](http://boost.org)。是的,它是一個外部軟件包,但是它是可移植的,製作精良的,並且導致更好的代碼。) – 2012-04-13 00:09:24

回答

1

使用標準C++:

#include <future> 

int main() { 
    MyClass mc; 
    auto future = std::async(MyClass::Run,&mc); 
    ... 
} 
2

C++語言本身沒有任何線程*的概念。您當然可以使用C++編寫多線程程序,但它將涉及使用特定於平臺的線程庫。例如,您可以在Linux系統上使用「pthreads」庫。你的目標平臺是什麼? *在新的C++ 11規範中添加的擴展添加了對線程的標準化支持,但許多編譯器和標準庫尚未實現此版本的標準。

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