:クリティカルセクションは、可能な競合データへのアクセス、利用状況を使用#pragma omp critical (name)
(名前を省略することができます)。1つのスレッドだけ入力することを確実にするために。
注:重要な文は互いに入れ子にすることはできません
例:タスクの共有ドメイン、保護の重要な領域に一つ、各スレッドの1のための並列領域では、データの競争の状況を回避するように、最大と交換価値は、可能な最大の間の関係の現在の要素を比較します。
#include <stdio.h>
#include <omp.h>
int main()
{
int i, max_x = -1, max_y = -1;
int arx[] = {5, 16, 87, 65, 24, 35, 9, 33};
int ary[] = {68, 4, 98, 43, 56, 18, 54, 11};
#pragma omp parallel for
for (i = 0; i < 8; i++)
{
#pragma omp critical
if (arx[i] > max_x)
max_x = arx[i];
#pragma omp critical
if (ary[i] > max_y)
max_y = ary[i];
}
printf("max_x = %d , max_y = %d\n", max_x, max_y);
return 0;
}