目的
このサブルーチンは、実行中のスレッドに、 指定したロックの所有権を解放させます。 この後、そのロックは、必要に応じて、別のスレッドが設定することができるようになります。 以下のいずれかの条件が発生した場合、omp_unset_lock サブルーチンの動作は未定義です。
クラス
サブルーチン
引き数の型と属性
結果の値と属性
なし
結果の値
なし
例
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 を更新しているようにします。