OpenMPの重要な重要な領域

:クリティカルセクションは、可能な競合データへのアクセス、利用状況を使用#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;
}
公開された673元の記事 ウォンの賞賛644 ビュー380 000 +

おすすめ

転載: blog.csdn.net/zhaohaibo_/article/details/90408956