2.6.3 barrier 指令

障碍 指令同步团队的所有线程。 当遇到,在团队的每个线程等待,直到所有其他到达了这一点。 障碍 指令的语法如下所示:

#pragma omp barrier new-line

在团队的所有线程都遇到关卡之后,在团队的每个线程开始并行执行语句在障碍指令之后。 请注意,由于作为其语法的一部分, 障碍 指令没有 c. 语言语句,对其位置的一些限制在程序中。 为正式语法参见 附录 C 。 下面的示例阐释了这些限制。

/* ERROR - The barrier directive cannot be the immediate
*          substatement of an if statement
*/
if (x!=0)
   #pragma omp barrier
...

/* OK - The barrier directive is enclosed in a
*      compound statement.
*/
if (x!=0) {
   #pragma omp barrier
}