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
}