<< 23 >>
インテル® C/C++ コンパイラー OpenMP* 活用ガイド
デュアルコア・マルチコア対応アプリケーション開発A
5.4 同期構文
同期構文には、master、critical、barrier、の 6 つの宣言子があります。
master 宣言子
master 宣言子で指定されたブロックはマスタースレッドのみで実行されます。
#pragma omp master
実行するコードブロック
マスター以外のスレッドはこのコードブロックをスキップし、次の実行に移ります。master 宣言子エントリ、または
出口には同期ポイントは設けられません。
critical 宣言子
クリティカル・セクションは、指定したコードブロックを同時に 1 つのプロセスだけが 実行することを指示するものです。
同コードブロックを実行する他のプロセスはクリティカル・セクションを実行しているプロセスが終了するのを待たなけ
ればなりません。
critical 宣言子のシンタックスは以下の通りです。
#pragma omp critical [(name)]
実行するコードブロック
クリティカル・セクションに名前を付けることができます。同じ名前を持つクリティカル・セクションは、同一のもの
としてクリティカル・セクションにまたがっての排他制御が可能となります。省略した場合には、全て同じものとしてマッ
ピングされます。
図.18 クリティカル・セクションの実行
#pragma omp parallel
{
#pragma omp for
{
}
#pragma omp critical
{
}
#pragma omp for
{
}
}
逐次実行するプログラムブロック
逐次実行するプログラムブロック
並列実行するプログラムブロック
一つのスレッドだけで処理するブロック
並列実行するプログラムブロック
スレーブスレッド
マスタースレッド