我如何明确地线程化任务?

qua*_*ant 0 c++ multithreading openmp

假设我有两个功能:

Fun1();
Fun2();
Run Code Online (Sandbox Code Playgroud)

这些函数是独立的,如果我可以并行运行它们(即,Fun1在一个线程和Fun2另一个线程上运行),任务将得到改进.我使用的是Visual Studio 2012 - 所以Open MP 2.0.

是否有一个直接的方式(没有任何并行区域的线程数测试或用于循环dodginess)来实现这一目标?OpenMP是否提供此类功能?

我试图寻找在paralleltask指令作为一个地方开始,但我发现,大部分的文献中有详尽的难以理解,但没有找到任何的例子...

Joh*_*nck 5

C++ 11:

std::thread thread1(Fun1);
Fun2(); // runs on main thread
thread1.join(); // wait for completion
Run Code Online (Sandbox Code Playgroud)

如果你没有C++ 11,可以替换std::thread使用boost::thread,做同样的.