2 つの異なる omp_lock_t を作成し、それらを互いに独立してロックできると想定しました。次のコード セクションを gcc 4.4 と gcc 4.6.1 でテストしたところ、同じ出力が得られました。
omp_lock_t lockA;
omp_lock_t lockB;
omp_init_lock(&lockA);
omp_init_lock(&lockB);
std::cout << "Lock B is: " omp_test_lock(&lockB) << "\n";
omp_set_lock(&lockA);
std::cout << "Lock A set\n";
std::cout << "Lock B is: " omp_test_lock(&lockB) << "\n";
omp_set_lock(&lockB);
...
このコードは、次の出力を生成します。
Lock B is: 1
Lock A set
Lock B is: 0
次に、omp_set_lock(&lockB) の試行でデッドロックします。
2 つの異なるロックを作成して、それらを個別に使用することはできませんか? 可能であれば、これらのロックを設定する正しい方法は何ですか?
ありがとう