“关键”一个完整的功能

时间:2013-10-30 12:52:13

标签: c openmp

我正在尝试使用openMP,而且我有一个函数永远不能同时运行两次。在另一个世界,这不会是一个问题:

int foo(void){
 mutex->lock();
 ....
 mutex->release();
}

如何在OpenMP中实现相同的目标?

1 个答案:

答案 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.