omp flush ディレクティブは、並列領域内のすべてのスレッドがメモリー内で指定されたオブジェクトの同じビューを持っていることをコンパイラーが保証するポイントを識別します。
.-+---+----. | '-,-' | V | >>-#--pragma--omp flush----+------+-+-------------------------->< '-list-'
ここで、list は、同期化される変数のコンマ区切りのリストです。
list にポインターが含まれる場合、 ポインターに参照されているオブジェクトではなく、ポインターがフラッシュされます。list が指定されていない場合は、 自動ストレージ期間にアクセス不能なオブジェクトを除くすべての共用オブジェクトが同期化されます。
暗黙の flush ディレクティブは、以下のディレクティブとともに現れます。
omp flush ディレクティブは、1 つのブロック内、または複合ステートメント内に現れなければなりません。例を以下に示します。
if (x!=0) { #pragma omp flush /* valid usage */ }
if (x!=0) #pragma omp flush /* invalid usage */