哲学家进餐

Code:
  1. var chopstick: array[0, ..., 4] of semaphore := 1;   
  2. codebegin   
  3. begin   
  4.  思考   
  5.  P(chopstick[i]);    
  6.  P(chopstick[(i+1)mod5]);   
  7.     
  8.  进餐   
  9.   V(chopstick[i]);    
  10.  V(chopstick[(i+1)mod5]);   
  11. end   
  12. codeend   
  13. //上述算法,每位哲学家进餐前总是先取左边筷子,成功后,再取右边筷子。如果5位科学家同时   
  14. //都拿起了左边的筷子,再试图去拿右边的筷子时,则会死锁   
  15. //解决方法采取以下措施:   
  16. //(1)最多只允许思维哲学家同时进餐,这样就能保证至少意味哲学家能拿到两只筷子进餐   
  17. //(2)给所有哲学家编号,并规定奇数号的哲学家必须先拿左边的筷子,然后再拿右边的筷子,而偶数   
  18. //号的哲学家则相反。最多总有一个哲学家总能拿到两只筷子   
  19.     

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值