OpenMP关键部分vs锁

时间:2015-04-12 07:35:46

标签: openmp

OpenMP 锁和关键部分有什么区别?它们只是彼此的替代品吗? 例如,如果我使用多个文件写入同一个文件,我应该在写入文件之前使用锁定还是仅使用临界区?

1 个答案:

答案 0 :(得分:8)

关键部分最常用于内部锁定,例如:

  • libgomp:source
  • libiomp:

      

    如果省略了optional(name),它将锁定一个未命名的全局互斥锁。

  •   
  OpenMP规范保证以下行为:

>

  

关键构造限制了关联的执行   结构化块一次到单个线程

因此,关键部分的作用与获取锁定的目的相同。不同之处在于为您处理了低级细节。

由于简单,我建议您尽可能使用critical。如果您有单独的块需要关键但不互相干扰给它们命名,并且只有当您需要某些注释无法满足的行为时,才使用显式锁定。