OpenMP 並列コンパイラ指示文:コードのブロックが,チーム内の 1 つのスレッドによってのみ実行されることを指定します。
形式
c$OMP SINGLE [clause[[,] clause] ... ]
c
次のいずれか:C (または c),!,* (「並列指示文の構文規則」を参照)
clause
以下のいずれか。
block
文または構文の構造化ブロック (セクション)。これを構成するセクションも,すべて構造化ブロックでなくてはなりません。
規則と振る舞い
チーム内の,この指示文を実行していないスレッドは,NOWAIT が指定されていない限り,END SINGLE 指示文で待機します。
SINGLE 指示文は,チーム内のすべてのスレッドが遭遇するか,どのスレッドも遭遇しないように置かれていなくてはなりません。また,チーム内のすべてのスレッドが同じ順序で遭遇するようになっている必要があります。
関連情報
Compaq Fortran 並列コンパイラ指示文,OpenMP Fortran API コンパイラ指示文,Tru64 UNIX システム用の並列指示文
例
次の例では,SINGLE 指示文に遭遇した最初のスレッドが,サブルーチン OUTPUT と INPUT を実行します。
c$OMP PARALLEL DEFAULT(SHARED) CALL WORK(X) c$OMP BARRIER c$OMP SINGLE CALL OUTPUT(X) CALL INPUT(Y) c$OMP END SINGLE CALL WORK(Y) c$OMP END PARALLEL
どのスレッドが SINGLE セクションを実行するのかという点について仮定を設けてはなりません。他のすべてのスレッドは SINGLE セクションをスキップし,END SINGLE 構文のバリアで停止します。他のスレッドが,SINGLE セクションを実行しているスレッドを待つことなく先に進むことができる場合,END SINGLE 指示文で NOWAIT を指定することができます。