以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 计算机考研交流 』   (http://bbs.xml.org.cn/list.asp?boardid=67)
----  急问OS生产者和消费者问题的一种变形  (http://bbs.xml.org.cn/dispbbs.asp?boardid=67&rootid=&id=53442)


--  作者:p11y06d0
--  发布时间:10/6/2007 3:17:00 PM

--  急问OS生产者和消费者问题的一种变形
多个生产者和多个消费者共享N个单元的Buffer,生产者每次生产一个,消费者每次消费三个。
请问为什么在PV操作中生产者和消费者进程必须分别设置一个互斥信号量?经典问题中共享一个由N个缓冲区组成的有界缓冲池不是只须设置一个互斥信号量吗?恳请高手指教。


--  作者:xiuluodao
--  发布时间:10/6/2007 9:48:00 PM

--  
我觉得只用一个互斥信号量就行了!题目可能追求严谨或还有别的要求,有点像写者问题?呵呵,小弟愚见而已!
--  作者:albani
--  发布时间:10/6/2007 10:27:00 PM

--  
生产者和消费者各有个计数 i , j   生产者程序中加条判断 if((i-j)%n>2) v(full)
--  作者:albani
--  发布时间:10/6/2007 10:28:00 PM

--  
感觉也不太对,再想想
--  作者:albani
--  发布时间:10/6/2007 10:30:00 PM

--  
应该就在生产者中用两个计数,每生产三个后P(full)
--  作者:buddha
--  发布时间:10/9/2007 1:55:00 PM

--  
多个生产者和消费者必须要各自设置一个信号量.否则容易产生死锁,如果缓冲池空了的情况,来了一个消费者,p(mutex)之后就停住了.而生产者也因为没有mutex资源也无法进行生产.就产生了无限等待
--  作者:buddha
--  发布时间:10/9/2007 2:02:00 PM

--  
生产者每次生产一个,消费者每次消费三个的情况个人感觉只要在多生产者多消费者的基础上生产者P(empty)三次后V(full),消费者p(full)后三次v(empty)就可以吧.
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
77.148ms