【发布时间】:2014-12-08 05:03:44
【问题描述】:
假设变量 A 在 OpenMP 关键部分的主体内被修改,并且还假设此变量 A 在没有关键构造的关键部分之外也被修改,但仍在并行区域内。我只是想知道当其中一个线程在临界区内时,临界区是否会保护对该变量的更新(可能发生在外部)?谢谢。
【问题讨论】:
假设变量 A 在 OpenMP 关键部分的主体内被修改,并且还假设此变量 A 在没有关键构造的关键部分之外也被修改,但仍在并行区域内。我只是想知道当其中一个线程在临界区内时,临界区是否会保护对该变量的更新(可能发生在外部)?谢谢。
【问题讨论】:
不,关键部分仅“保护”在该部分内进行的更新。对临界区之外的“受保护”变量的任何更新都会使这些变量不受保护。别忘了,临界区意味着一次只有一个线程执行它(临界区)所包含的代码。
这似乎很明显,所以我想知道您为什么要问这个问题,以及您想要达到的目标。
【讨论】: