我需要在C ++ OpenMP中实现C#线程效果..
Thread t=new Thread( func1 );
t.Start(); // Do something
// Do something else
请注意,父母或孩子都没有等待加入..
我可以在C ++ OpenMP中执行此操作吗?
谢谢,
答案 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
//...