让我们假设变量A在OpenMP临界区的主体内被修改,并且还假设该变量A也在临界区外修改而没有关键构造但仍在并行区内。我只是想知道,当其中一个线程在关键区域内时,关键部分是否会保护对此变量的更新(可能在外部发生)或不保护更新?感谢。
答案 0 :(得分:2)
不,关键部分仅“保护”该部分内的更新。对关键部分之外的“受保护”变量的任何更新都会使这些变量不受保护。不要忘记,关键部分意味着一次只有一个线程执行它(关键部分)所包含的代码。
这似乎是显而易见的,所以让我想知道你为什么问这个问题以及你想要实现的目标。