【发布时间】:2012-06-14 16:15:59
【问题描述】:
我假设我能够创建 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) 尝试时死锁。
难道不能创建两个不同的锁并独立使用吗?如果可能,设置这些锁的正确方法是什么?
谢谢
【问题讨论】:
标签: c++ gcc parallel-processing openmp