《linux c++服务端编程》中条件变量的一个思考
你看,cond.wait() 在等 !queue.empty(),即「队列非空」,那么:
每次 enqueue 操作都能使队列非空只有 enqueue 以后队列中存在一个元素,才能使队列非空显然前者是正确的,后者是荒谬的。类似的问题,很多情况下,连条件变量的原理都不需要考虑,单从逻辑上,就能解释了。
---
【《linux c++服务端编程》中条件变量的一个思考】 感觉这就像个程序员笑话:
两个程序员进了自助餐厅,鸡翅那边因为畅销所以暂时没有库存。A:我先去上个厕所,你帮我看着点鸡翅啊,吧台上只要有一份就赶紧帮我拿下。B:好嘞!(十分钟后,A 回来了)A:卧槽,这么久了怎么还没去拿?……你看那边不是有两份没人拿么?B:对啊,那是两份啊。A:……
■网友
书第42页提出这个问题的地方有一个脚注,你打开脚注给的链接就知道答案了。发布一个 Linux 下的 C++ 多线程库
■网友
如果有有两个线程在wait,那么连续enqueue可能只会唤醒一个等待线程
■网友
会发生starvation 因为下一次的push和notify顺序不确定 若是连续快速发生2次或以上的push而只有一次notify则会有饿死发生
推荐阅读
- 八字嘴东大河船闸建成江西信江获三级通航条件
- 毕业生|招聘中不得将全日制作为限制性条件2021届高校毕业生预计909万人
- 基础|并不是分高就能上!基础很重要!这5大热门专业有“附加条件”
- 当一个人设计师想创业需要具备啥条件
- 条件|娃不容易生病宝宝出生后多久能出门?满足以下几个条件再出去
- 盐通高铁|盐通高铁试运行 全程40分钟 年底具备开通运营条件
- 出行管理|电动三轮四轮车也可以上牌了,必须要具备两个关键的条件
- 投资开发VR应用需要哪些条件
- |盐通高铁试运行 全程40分钟预计年底具备开通运营条件
- 市民政局|成为社会工作专业督导需要哪些条件?
