我正在尝试使用openMP,而且我有一个函数永远不能同时运行两次。在另一个世界,这不会是一个问题:
int foo(void){
mutex->lock();
....
mutex->release();
}
如何在OpenMP中实现相同的目标?
答案 0 :(得分:1)
使用:
#pragma omp critical (CriticalSection1)
{
// your stuff here
}
修改强>
我希望这更清楚:
int foo(void){
//mutex->lock();
#pragma omp critical (CriticalSection_foo)
{
....
}
//mutex->release();
}
编辑2
我根据评论者的建议将示例扩展为包含命名的临界区。圆括号是必要的,请参阅the Intel OMP documentation with an example.