OpenMP关键部分vs锁

Omk*_*kar 6 openmp

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

jep*_*pio 9

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

  • libgomp:来源
  • libiomp:

    如果省略可选(名称),则会锁定未命名的全局互斥锁.

OpenMP规范保证以下行为:

>

关键构造一次将相关结构化块的执行限制为单个线程

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

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