OpenMP C ++中的线程

时间:2011-01-07 19:26:48

标签: c++ multithreading openmp

我需要在C ++ OpenMP中实现C#线程效果..

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

请注意,父母或孩子都没有等待加入..

我可以在C ++ OpenMP中执行此操作吗?

谢谢,

1 个答案:

答案 0 :(得分: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
//...