我假设我能够创建 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) 尝试中死锁。
难道不能创建两个不同的锁并独立使用它们吗?如果可能,设置这些锁的正确方法是什么?
谢谢