用管程解决生产者-消费者问题.doc

用管程解决生产者-消费者问题.doc

ID:59364532

大小:14.50 KB

页数:1页

时间:2020-09-04

用管程解决生产者-消费者问题.doc_第1页
资源描述:

《用管程解决生产者-消费者问题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、}建立一个管程并命名为PC,其中包括两个函数:put将产品放入缓冲池中;get从缓冲池中取出产品。}设置了条件变量conditionnotfull,notempty;◦notfull表示当生产者要放产品,而缓冲区满时,生产者等待◦notempty表示消费者要取产品,而缓冲区空时,消费者等待}设置变量count,表示缓冲池中的产品数目。}MonitorPC;/*管程名*/}itembuffer[n];/*缓冲区*/}intin,out;/*存取指针*/}intcount;/*缓冲中产品数*/}conditionnotfull,notempt

2、y;/*条件变量*/}voidEntryput(itemx)/*向缓冲区放产品*/}{}if(count==n)notfull.wait;/*缓冲已满*/}buffer[in]=x;}in=(in+1)%n;count=count+1;}if(count==1)notempty.signal;/*唤醒等待者*/}}}voidEntryget(itemx)/*从缓冲区取产品*/}{}if(count==0)notempty.wait;/*缓冲已空*/}x=buffer[out];}out=(out+1)%n;count=count-1;}i

3、f(count==n-1)notfull.signal;/*唤醒等待者*/}}}{in=0;out=0;count=0;}/*初始化*/}cobegin}voidproducer(inti)/*生产者*/}{}itemnextp;}while(true)}{produceaniteminnextp;}PC.put(nextp);}}}}}voidconsumer(inti)/*消费者*/}{}itemnextc;}while(true)}{PC.get(nextc);}consumetheiteminnextc;}}}}}coend

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。