哲学家问题.docVIP

  • 19
  • 0
  • 约4.8千字
  • 约 6页
  • 2016-12-23 发布于江苏
  • 举报
问题描述: ??一个房间内有6位哲学家,他们的生活就是思考和进食。哲学家思考后,过一定的时间就会饥饿,饥饿之后就想吃饭,吃饭后再思考。房间里有一张圆桌,桌子周围放有6把椅子,分别属于6位哲学家,每两位哲学家之间有1支筷子,哲学家进食时必须同时使用左右两支筷子。 问题: 写出哲学家进餐的算法描述。 philosopher(i); begin if(i%2!=0)//奇号哲学家 { p((i+1)%6); p(i); eating; v(i+1); v(i); thinking; } else//偶号哲学家 { p(i); p(i+1); eating; v(i); v(i+1); thinking; } end 写出你的算法如何解决死锁问题,即不能6位哲学家各拿到1支筷子,但都吃不上。 1)解决方案:让奇数号的哲学家先取右手边的筷子,让偶数号的哲学家先取左手边的筷子;这样、任何一个哲学家拿到一支筷子以后,就已经阻止了他的邻座的一个哲学家吃饭的企图(如1号哲学家由于他是奇号哲学家故先取右手边的2号筷子,当他取到2号筷子时就已经阻止了2号哲学家吃饭的企图、因为2号哲学家是偶号哲学家要想吃饭必需先拿到左手边的筷子2号筷子),在这种情况下除非某个哲学家一直吃下去,

文档评论(0)

1亿VIP精品文档

相关文档