omp_unset_lock(svar)

目的

このサブルーチンは、実行中のスレッドに、 指定したロックの所有権を解放させます。 この後、そのロックは、必要に応じて、別のスレッドが設定することができるようになります。 以下のいずれかの条件が発生した場合、omp_unset_lock サブルーチンの動作は未定義です。

クラス

サブルーチン

引き数の型と属性

svar
整数の kind omp_lock_kind

結果の値と属性

なし

結果の値

なし

      USE omp_lib
      INTEGER A(100)
      INTEGER(kind=omp_lock_kind) LCK_X
      CALL omp_init_lock (LCK_X)
!$OMP PARALLEL PRIVATE (I), SHARED (A, X)
!$OMP DO
      DO I = 3, 100
        A(I) = I * 10
        CALL omp_set_lock (LCK_X)
        X = X + A(I)
        CALL omp_unset_lock (LCK_X)
      END DO
!$OMP END DO
!$OMP END PARALLEL
      CALL omp_destroy_lock (LCK_X)

この例では、共用変数 X の更新時に競合状態を避けるために、ロック変数 LCK_X が使用されています。 X を更新するたびに、更新前にロックを設定し、更新後に設定解除することによって、 1 時点で必ず 1 つのスレッドのみが X を更新しているようにします。 IBM Copyright 2003