condition_variable cv;
mutex mu;
void thread1()
{
mu.lock();
unique_lock<mutex>lck(mu);
cv.wait(lck);
cout<<1;
}
void thread2()
{
sleep(1);
mu.lock();
cv.notify_all();
cout<<2;
}
int main()
{
thread t1(thread1);
thread t2(thread2);
sleep(2);
}
我理解中的条件变量完成3件事.
1.解锁互斥锁.
2.等待通知.
3.通知到来后,再次给互斥锁上锁.
但这个不对劲,线程1开始wait之后,互斥锁应该已经解开了,线程2为什么依然没法获取互斥锁?
最后两个程序都应该打印一个数字,但实际上它们什么也不打印.
解决办法移除线程2的 mu.lock()