2
我写了一个简单的代码,其中我使用unique_lock并解锁互斥锁,而不是调用锁本身的解锁。当第一个线程进入临界区并调用my_mutex.unlock()时,许多其他线程一起进入临界区。在与unique_lock关联的互斥锁中调用解锁会导致未定义的行为
std::mutex my_mutex;
void sample() {
std::unique_lock<std::mutex> lock(my_mutex);
// Critical section
my_mutex.unlock();
}
这是怎么发生的?在由unique_lock持有的互斥体上调用解锁是否是错误的?谢谢!
谢谢!其实我在我的实际代码中没有本地互斥。我将更新问题中的代码。 – kwadhwa