我有两个条件变量:两个条件变量,避免死锁
CondVar1
CondVar2
用在两个线程像这样的(伪代码):
// thread1 starts in 'waiting' mode, and then Thread2 signals
void Thread1()
{
CondVar1->Wait();
CondVar2->Signal();
}
void Thread2()
{
CondVar1->Signal();
CondVar2->Wait();
}
可这导致死锁?意思是,thread1等待,thread2信号,然后可以在thread2进入Wait()之前thread1信号,这意味着thread2永远不会返回?
感谢
反过来也是可能的:如果线程2个运行线程1之前,在上'ConVar1信号'在线程1调用'Wait'之前可能会丢失。 – Tudor