THREADPRIVATE (TU*X のみ)

OpenMP 並列コンパイラ指示文:名前付き共通ブロックがスレッドに対して非公開 (局所) であることを指定します。これらはスレッド内では大域です。

形式

c$OMP THREADPRIVATE ( /cb/ [, /cb/] ... )

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

cb
スレッドに対して非公開にしたい共通ブロックの名前。スレッドに対して非公開にできるのは,名前付き共通ブロックだけです。斜線 (/) は必須であることに注意してください。

規則と振る舞い

各スレッドは共通ブロックの独自のコピーを受け取るので,1 つのスレッドが共通ブロックに書き込んだデータは,他のスレッドからは直接には見えません。

プログラムの直列の部分と MASTER セクション中では,参照は共通ブロックのマスタ・スレッドのコピーに対して行われます。最初の並列領域に入った時点で,THREADPRIVATE 共通ブロック中のデータは,PARALLEL 指示文で COPYIN 節が指定されていない限り,不定の状態と見なされます。

THREADPRIVATE 指示文に (DATA 文を使って初期化される) 共通ブロックが指定されている場合,個々のスレッドのコピーはそれが最初に使用される前に 1 回だけ初期化されます。それ以降の並列領域では,THREADPRIVATE 共通ブロック中のデータは,動的スレッド機構が無効化されており,スレッドの数がすべての並列領域で同じである場合にのみ,永続することが保証されます。

THREADPRIVATE 共通ブロックまたはその構成変数は,COPYIN 節でしか指定することができません。これらは PRIVATEFIRSTPRIVATELASTPRIVATESHARED,または REDUCTION 節では使用できません。これらは DEFAULT 節の影響は受けません。

関連情報

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

次の例では,共通ブロック BLK1FIELDS がスレッドに対して非公開として指定されています。

	      COMMON /BLK/ SCRATCH
	      COMMON /FIELDS/ XFIELD, YFIELD, ZFIELD
	c$OMP THREADPRIVATE(/BLK/,/FIELDS/)
	c$OMP PARALLEL DEFAULT(PRIVATE) COPYIN(/BLK1/,ZFIELD)