返回信息流为什么会出现生产者等待消费者释放资源的同时消费者等待生产者释放资源呢?生产者满了就通知消费者,然后睡觉,消费者空了就通知生产者,然后睡觉呗,怎么会产生死锁呢?死锁是怎么产生的?
这是一条镜像帖。来源:北邮人论坛 / java / #50829同步于 2016/6/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
生产者消费者模式为什么会产生死锁?
xiao5aha
2016/6/2镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
使用C/C++过来围观,我是这么想的,首先资源肯定是只有一方抢到了。比方书生产者抢到了,然后准备往队列里放数据,发现队列数据满了,然后他就得等待消耗。但是他还不释放,也就是说消费者进不来,不能清空队列。因此导致死锁。死锁的三个条件里面的一个,不释放拉。
这也是为什么要加上一个标志量,因为(c++有虚假唤醒)。实际上如果你发现满了,然后释放掉请求让消费者消耗是不会产生死锁的。给你个网页:https://zh.wikipedia.org/wiki/%E7%94%9F%E4%BA%A7%E8%80%85%E6%B6%88%E8%B4%B9%E8%80%85%E9%97%AE%E9%A2%98
很有参考性,生产者已经生产完毕而消费者还在等待的时候,或者消费者消费完毕而生产者等待生产的时候会出现死锁,谢谢你
【 在 MySsir 的大作中提到: 】
: 好巧,昨天刚看了这个,看一下评论就知道了
: http://lavasoft.blog.51cto.com/62575/221932
不过现在孩子们也太开放啦,什么都没说呢,就睡觉。@zc199102 没代码说个傻子。
【 在 nuanyangyang 的大作中提到: 】
: 没代码没真相