1

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

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

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

4

1 回答 1

1

利用:

#pragma omp critical (CriticalSection1)
{
    // your stuff here
}

编辑

我希望这更清楚:

int foo(void){
    //mutex->lock();
#pragma omp critical (CriticalSection_foo)
    {
        ....
    }
    //mutex->release();
}

编辑 2

根据评论者的建议,我扩展了示例以包括命名的关键部分。圆括号是必需的,请参阅带有示例的英特尔 OMP 文档。

于 2013-10-30T12:54:02.857 回答