永发信息网

记录型信号量解决生产者消费者问题伪代码,描述每一步具体执行过程

答案:1  悬赏:0  手机版
解决时间 2021-03-27 11:33
记录型信号量解决生产者消费者问题伪代码,描述每一步具体执行过程
最佳答案
Var mutex,empty,full:semaphore:=1,n,0; // 定义三个信号量
buffer:array[0,...,n-1]of item; // 定义缓冲池,容量为n
in,out:integer:=0,0;
begin
parbegin
proceducer:begin // 生产者
repeat
.
.
.
producer an item nextp; // 生产一个产品
.
.
.
wait(empty); // 申请一个空缓冲区
wait(mutex); // 申请缓冲池的使用权
buffer(in):=nextp; // 将产品放入缓冲池中
in:=(in+1)mod n; // 下一个空缓冲区地址
signal(mutex); //释放缓冲池使用权
signal(full); // 释放一个满缓冲区
until false;
end
consumer:begin
repeat
wait(full);
wait(mutex);
nextc:=buffer(out);
out:=(out+1)mod n;
signal(mutex);
signal(empty);
consumer the item in nextc;
until false;
end
parend
end

nextp 应该是next proceducer的意思吧
nextc 应该是next consumer
貌似也不是什么变量,属于语言描述而已
下面的消费者也是差不多的。

至于生产者进程如何被阻塞和唤醒,因为程序中有一个 repeat语句,所以进程不断测试缓冲池是否有空缓冲区,以及缓冲池是否有其他进程使用。若两个条件不满足,则进入阻塞队列等待。若某一时刻两个条件都能满足,则能唤醒该进程。
建议楼主还是去找几题用C语言写的生产者消费者程序看吧,这个语言不太容易看懂
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
宋玉鑫怎么写好看,写行书的时候。
写简历用鄙人合适吗?
简便计算:1、95.5-81/7.5-9.2 2、9.99&#
成都的H证有何作用?
圣经里有领独这个人吗?为什么有个自称基督徒
单选题列宁说:“意识到自己的奴隶地位而与之
鸡先出生还是蛋先出生。
轿车里突然显示这个小扳手是什么???
为什么穷父母只会打压孩子?
js里的Date()支持什么样的日期格式吗?
nuface美容仪的微电流跟refa的电流有什么区别
我电脑文件【发送到(N)】后面没有桌面两字
怎样炒杏仁
派派头像下面那个位置!我是秦皇岛为什么显示
Daming likes in the morning everyday.A. r
推荐资讯
通榆县白城隆昇寄卖行地址是什么,有没有知道
珠海市房产物业管理有限公司唐家花园管理处在
集中供暖地暖能否改成集中供暖和壁挂锅炉同时
科代表如何提高全班同学的语文成绩方法和建议
异世界的圣机师物语跟天地无用是什么关系?
笔记本视频通话,需要外接耳机和麦克风吗
被审计单位把重大错报都更正,还要出具非保留
依云矿泉水在沙特阿拉伯的价格
用磁铁片缝制到内裤上,对身体有好处吗,有没
给人们带来灾难的是什么星
百世快运(卧虎山大街126百世快运)地址在什么
六分之五乘六分之二得多少
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?