3.2 ロック関数
このセクションでは、同期用に使用されるロックを操作する関数について説明します。
次の関数では、ロック変数は omp_lock_t 型であることが要求されます。この変数は、これらの関数からのみアクセスされる必要があります。すべてのロック関数が、omp_lock_t 型へのポインタを持つ引数を要求します。
omp_init_lock 関数は、単純ロックを初期化します。
omp_destroy_lock 関数は単純ロックを削除します。
omp_set_lock 関数は、単純ロックが使用可能になるまで待機します。
omp_unset_lock 関数は単純ロックを解放します。
omp_test_lock 関数は単純ロックをテストします。
次の関数では、ロック変数は omp_nest_lock_t 型であることが要求されます。この変数は、これらの関数からのみアクセスされる必要があります。すべての入れ子にできるロック関数が、omp_nest_lock_t 型へのポインタを持つ引数を要求します。
omp_init_nest_lock 関数は入れ子にできるロックを初期化します。
omp_destroy_nest_lock 関数は入れ子にできるロックを削除します。
omp_set_nest_lock 関数は入れ子にできるロックが使用可能になるまで待機します。
omp_unset_nest_lock 関数は入れ子にできるロックを解放します。
omp_test_nest_lock 関数は入れ子にできるロックをテストします。
OpenMP ロック関数は、ロック変数にアクセスして、常にそのロック変数の最も新しい値を読み取り更新します。したがって、ロック変数の値が異なるスレッド間で一致するように、OpenMP プログラムに明示的な flush ディレクティブをインクルードする必要はありません。ただし、他の変数の値と一致させるために flush ディレクティブが必要になる場合もあります。