2011-01-07 73 views
0

我需要實現在C++的OpenMP的C#線程效果..線程在OpenMP的C++

Thread t=new Thread(func1); 
t.Start(); // Do something 
// Do something else 

注意,無論是父母或孩子等待被連接..

我能做到這一點的C++ OpenMP?

感謝,

+0

據我所知,openMP的要點是編譯器生成代碼來爲你產生多個線程。 – Dima 2011-01-07 19:31:06

+0

如果我需要啓動一個線程並且不等待它完成,該怎麼辦? – Betamoo 2011-01-07 19:41:18

回答

2

OpenMP是一個更高層次的線程庫比C#線程,經常被用於幾乎自動地添加一些線程以串行應用。您可以通過使用#pragma omp parallel指令來實現類似於您所需的操作,該指令將自動在多個線程中的指令塊內運行代碼。然後你可以在這個並行部分調用函數。

OpenMP的強大之處在於,使用一些指令將線程添加到現有代碼很簡單。但是,如果我想要做任何複雜的事情(或者簡單的事情),我發現使用低級線程庫會更容易。

如果您想要與C#線程有類似接口的東西,請查看Boost.Thread庫。有了這個,你可以用幾乎相同的語法完成你想要的任務:

#include <boost/thread.hpp> 

//creates the thread object and starts the thread, returns immediately 
boost::thread th(func1); 

//... 
//do something else 
//...