次の方法で共有


3.2.3 omp_set_lock 関数と omp_set_nest_lock 関数

これら 2 つの関数はどらちも、指定のロックが使用できるようになるまで、関数を実行しているスレッドをブロックし、ロックを設定します。単純ロックは、ロックが解除されると使用できるようになります。入れ子にできるロックは、ロックが解除されている場合、または関数を実行しているスレッドが所有している場合でも使用できます。形式は次のとおりです。

#include <omp.h>
void omp_set_lock(omp_lock_t *lock);
void omp_set_nest_lock(omp_nest_lock_t *lock);

単純ロックでは、omp_set_lock 関数の引数は、初期化済みのロック変数を指している必要があります。ロックの所有権が、関数を実行しているスレッドに与えられます。

入れ子にできるロックでは、omp_set_nest_lock 関数の引数は、初期化済みのロック変数を指している必要があります。入れ子カウントがインクリメントされ、スレッドにロックの所有権が与えられるか、スレッドがそのまま所有権を保持します。