2011-01-07 79 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 
//...