master
マスタ スレッドのみがプログラムのセクションを実行するように指定します。
#pragma omp master
{
code_block
}
解説
master ディレクティブは OpenMP 句をサポートしません。
single ディレクティブを使用して、コードのセクションをシングル スレッドで実行するように指定できます。これは、必ずしもマスタ スレッドである必要はありません。
詳細については、「2.6.1 master コンストラクト」を参照してください。
使用例
// omp_master.cpp
// compile with: /openmp
#include <omp.h>
#include <stdio.h>
int main( )
{
int a[5], i;
#pragma omp parallel
{
// Perform some computation.
#pragma omp for
for (i = 0; i < 5; i++)
a[i] = i * i;
// Print intermediate results.
#pragma omp master
for (i = 0; i < 5; i++)
printf_s("a[%d] = %d\n", i, a[i]);
// Wait.
#pragma omp barrier
// Continue with the computation.
#pragma omp for
for (i = 0; i < 5; i++)
a[i] += i;
}
}
a[0] = 0
a[1] = 1
a[2] = 4
a[3] = 9
a[4] = 16