<<  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    {    } } 逐次実行するプログラムブロック 逐次実行するプログラムブロック 並列実行するプログラムブロック 一つのスレッドだけで処理するブロック 並列実行するプログラムブロック スレーブスレッド マスタースレッド