FLUSH 指示文 (TU*X のみ)

OpenMP 並列コンパイラ指示文:実装がメモリーに関して一貫性のあるビューを提供しなければならない同期ポイントを識別します。

形式

c$OMP FLUSH [(list)]

c
次のいずれか:C (または c),!* (「並列指示文の構文規則」を参照)

list
フラッシュする 1 つまたは複数の変数の名前。名前はコンマで区切らなくてはなりません。

規則と振る舞い

FLUSH 指示文は,コード中の同期が必要となるポイントに正確に置かれていなくてはなりません。すべての変数がフラッシュされるのを防ぐには,list を指定します。

スレッド可視変数は,この指示文が置かれているポイントでメモリーに書き戻されます。スレッド可視変数への変更は,このポイント以降はすべてのスレッドから見えるようになります。それ以降,スレッド可視変数を読み込むと,最新のデータのコピーが取得されます。

スレッド可視変数には以下のデータ項目が含まれます。

以下の指示文では,FLUSH 指示文が暗黙のうちに仮定されます (NOWAIT キーワードが使用されている場合を除く)。

関連情報

Compaq Fortran 並列コンパイラ指示文OpenMP Fortran API コンパイラ指示文Tru64 UNIX システム用の並列指示文

次の例は,FLUSH 指示文を使って,1 対のスレッドの間で 2 点間の同期を行っています。

	c$OMP PARALLEL DEFAULT(PRIVATE) SHARED(ISYNC)
	      IAM = OMP_GET_THREAD_NUM()
	      ISYNC(IAM) = 0
	c$OMP BARRIER
	      CALL WORK()
	C I AM DONE WITH MY WORK, SYNCHRONIZE WITH MY NEIGHBOR
	      ISYNC(IAM) = 1
	c$OMP FLUSH(ISYNC)
	C WAIT TILL NEIGHBOR IS DONE
	      DO WHILE (ISYNC(NEIGH) .EQ. 0)
	c$OMP FLUSH(ISYNC)
	      END DO
	c$OMP END PARALLEL