在多线程(2个线程)程序中,我有以下代码:
while(-1)
{
m.lock();
(...)
m.unlock();
}
m
是一个互斥锁(在我的情况下是一个C++11的std::mutex
,但我认为如果使用不同的库,结果不会改变)。
假设第一个线程拥有互斥锁并且在(...)
部分执行了一些操作。第二个线程试图获取互斥锁,但它正在等待第一个线程释放m
。
问题是:当线程1结束它的(...)
执行并释放了互斥锁时,我们能否确定线程2会获取互斥锁,还是线程1可以在线程2之前重新获取互斥锁,使其被卡在lock()
中?