omp_set_lock サブルーチンは、指定したロックが使用可能になるまで、呼び出し側スレッドによる次の命令の実行を強制的に待機させます。ロックが使用可能になると、呼び出し側スレッドにその所有権が与えられます。
引き数タイプおよび属性
omp_lock_kind。
例
USE omp_lib 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 を更新しているようにします。