欢迎来到天天文库
浏览记录
ID:59364532
大小:14.50 KB
页数:1页
时间:2020-09-04
《用管程解决生产者-消费者问题.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
此文档下载收益归作者所有