CodeFree/6_solution/condition_variable
2024-12-26 13:57:27 +08:00
..
1_CV_demo.cc [202412261358]-迁移代码库 2024-12-26 13:57:27 +08:00
2_CV_demo.cc [202412261358]-迁移代码库 2024-12-26 13:57:27 +08:00
Readme.md [202412261358]-迁移代码库 2024-12-26 13:57:27 +08:00

1_CV_demo.cc

1、为什么线程A发通知前需要完成手动解锁

// 通知前完成手动解锁,以避免等待线程刚被唤醒就阻塞
ulk.unlock();
cv.notify_one(); 

原因:条件变量对象 cv 在执行 wait 函数时必须要获得锁。线程A与B共享锁且互相通知。如果A线程先发出通知而没有解锁那B线程的 wait 函数收到通知后,往下执行却没有获得锁,将继续陷入阻塞。

2_CV_demo.cc

介绍: 条件变量的 notify_all() 函数用法