条件变量为什么要用循环呢

zhentongshu 2013-09-12 07:54:08
condition_wait时候需要加锁吗
...全文
186 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Carl_CCC 2013-09-13
  • 打赏
  • 举报
回复
肯定需要加锁,参数就带锁,wait的时候会解锁,使用循环是,唤醒的时候我们等待那个条件不一定为真,我们无法做这个假设。真是等待的原则。
heartlesstoanyone 2013-09-13
  • 打赏
  • 举报
回复
引用 1 楼 heartlesstoanyone 的回复:
举例如下: locker.Lock(); while (mylist.empty()) { cond.Wait(locker); } elem = mylist.pop_front(); return elem; 使用while循环是避免多个线程等待从mylist中取数据的问题 一个线程就不存在这样的问题了,但前提是,不能做空唤醒。
不好意思,少了Unlock调用。
heartlesstoanyone 2013-09-13
  • 打赏
  • 举报
回复
举例如下: locker.Lock(); while (mylist.empty()) { cond.Wait(locker); } elem = mylist.pop_front(); return elem; 使用while循环是避免多个线程等待从mylist中取数据的问题 一个线程就不存在这样的问题了,但前提是,不能做空唤醒。

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧