消费者生产者的问题(semaphore mutex) 本人很菜,希望要详细回答,因为课本用的是pascal语言

varmutex,empty,full:semaphore:=1,n,0;buffer:array[0,***,n-1]ofitem;in,out:integer:=0,... var mutex,empty,full:semaphore:=1,n,0;
buffer:array[0,***,n-1] of item;
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);
gianal(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
详细,详细,详细,每一部,还有一些字符,要耐心,如果满意,可以加到一百分,也可以在线教导我,qq838885748,不过,最好直接每部写出来,不能复制别人类似的答案
期待通晓的人来给小弟一下指导
诶,是被书本前面类似一题误导了,今天再看看已经懂了。我就自问自答吧==!
var mutex,empty,full:semaphore:=1,n,0;empty是指空位置的数量,而full是装满的数量
buffer:array[0,***,n-1] of item;一共n个位置,来放物品
in,out:integer:=0,0;下一个要放物品和取物品的位置
begin 与end相对应
parbegin
proceducer:begin
repeat 与until false相对应
* 觉得省略号可以省略==!
*
*
producer an item nextp; 代表生产者的操作
*
*
*
wait(empty); wait就是p操作,每次让里面的变量减一,既是空位置数量减少了一个
wait(mutex); wait(mutex)与signal(mutex)想对应,分别代表互斥开始,可解放互斥
buffer(in):=nextp; nextp就是要放在第in位的物品
in:=(in+1)mod n; 指向下一位
signal(mutex); v操作,解放互斥
signal(full); signal就是v操作,让里面元素加一,既是装满数量增加一个
until false;
end

消费者也一样,
展开
 我来答
keven2148
2011-04-03 · TA获得超过1002个赞
知道小有建树答主
回答量:364
采纳率:0%
帮助的人:187万
展开全部
题目啊大哥,题目,还有你打的是什么玩意儿?完全看不懂,而且少了好多分号........
追问
你还是洗洗睡吧,题目就在你眼前了,你还不知道,还在问少分号,一看就知道,你没有见过。。。
那根本不是完全的语言的,只是一个理解的框架,不过还是很感谢你的参与
追答
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
北京金瑞博
2024-08-15 广告
欧洲QP(Qualified Person)声明是欧盟及PIC/S成员国在医药产品临床阶段的一种正式GMP(良好生产规范)符合性声明,具有法律认可的效力。该声明证明了企业在药品生产各环节,包括原料、生产、质量控制、仓储及物流等方面均符合欧盟... 点击进入详情页
本回答由北京金瑞博提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式