一个盘子一次只能放一个水果,A中只能往盘子里放一个苹果,B只能往盘子里放一个梨子,C只从盘子里取出苹

2003irise 1年前 已收到1个回答 举报

setgqwetwe 幼苗

共回答了16个问题采纳率:87.5% 举报

semaphore s;//设置一个信号量s,s的格式为s[r] //s[r]=0,0为盘子为空,且AB都没有过操作 //s[r]=A,1则盘子中A前一次放入过苹果,s[r]=B,1 //则盘子中前一次B放入过犁,s[r]=A,0则表示盘子为空,可以放入 //犁,s[r]=B,0则表示盘子为空,可以放入苹果 //当一个进程执行完后,在后面的3个周期里不得再执行本进程 Process A begin if(s[r]==0,0||s[r]==B,0)//当判断盘子为空或者可以放入苹 //果 P(s); 放入苹果; V(s);//s[r]=A,1 end Porcess B begin if(s[r]==A,0) P(s); 放入犁; V(s);//s[r]=B,1 end Porcess C begin if(s[r]==A,1) P(s); 取出苹果; V(s);//s[r]=A,0 end Porcess C begin if(s[r]==B,1) P(s); 取出犁; V(s);//s[r]=B,0 end

1年前

1
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.072 s. - webmaster@yulucn.com