THREADPRIVATE 宣言子を使用して、名前付きの共通ブロックをスレッドに対してプライベートに、スレッド内ではグローバルにすることができます。
各スレッドは、共通ブロックのコピーを取得し、1 つのスレッドにより共通ブロックに書き込まれるデータが、他のスレッドから直接見えないようにします。プログラムのシリアルな部分と マスターセクションでは、アクセスは共通ブロックのマスタースレッドのコピーに対して行われます。
スレッド・プライベートの変数は、次の節以外の節では使用できません。
COPYIN
COPYPRIVATE
SCHEDULE
NUM_THREADS
IF
次の例では、共通ブロックの BLK1 と FIELDS がスレッド・プライベートとして指定されています。
例 |
---|
COMMON /BLK1/ SCRATCH COMMON /FIELDS/ XFIELD, YFIELD, ZFIELD !$OMP THREADPRIVATE(/BLK1/,/FIELDS/) |
この宣言子についての詳細は、「OpenMP* Fortran Compiler Directives」(英語) を参照してください。