哲学家进餐问题课件.pptVIP

  • 84
  • 0
  • 约3.42千字
  • 约 23页
  • 2019-05-23 发布于湖北
  • 举报
哲学家进餐问题 05611 贺美琛 冯文中 问题描述 设有五个哲学家,共用一张放有五把椅子的餐桌,每人坐在一把椅子上,桌子上有五个碗和五只叉子,每人两边各放一只叉子。哲学家们是交替思考和进餐,饥饿时便试图取其左右最靠近他的叉子。 算法 A void philosopher(int i) /*i:哲学家编号,从0 到4*/ { while (TRUE) { think( ); /*哲学家正在思考*/ take_fork(i); /*取左侧的叉子*/ take_fork((i+1) % N); /*取右侧叉子;%为取模运算*/ eat( ); /*吃饭*/ put_fork(i); /*把左侧叉子放回桌子*/ put_fork((i+1) % N); /*把右侧叉子放回桌子*/ } } 算法分析: 当出现以下情形,在某一个瞬间,所有的哲学家都同时启动这个算法,拿起左侧的叉子,而看到右侧叉子不可用,又都放下左侧叉子,等一会儿,又同时拿起左侧叉子…

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档