OpenMP 锁和关键部分有什么区别?它们只是彼此的替代品吗? 例如,如果我使用多个文件写入同一个文件,我应该在写入文件之前使用锁定还是仅使用临界区?
答案 0 :(得分:8)
关键部分最常用于内部锁定,例如:
如果省略了optional(name),它将锁定一个未命名的全局互斥锁。
>
关键构造限制了关联的执行 结构化块一次到单个线程
因此,关键部分的作用与获取锁定的目的相同。不同之处在于为您处理了低级细节。
由于简单,我建议您尽可能使用critical
。如果您有单独的块需要关键但不互相干扰给它们命名,并且只有当您需要某些注释无法满足的行为时,才使用显式锁定。