文档介绍:哲学家进餐问题
哲学家
筷子
盘子
哲学家1号
哲学家5号
哲学家4号
哲学家2号
哲学家3号
1
5
3
2
4
未就餐时示意图
哲学家1号
哲学家4号
哲学家2号
哲学家3号
1
5
3
2
4
哲学家5号
先拿左,拿到后再拿右,,但可能死锁,如动画所示.
此时没有一个哲学家可以完成进餐.
哲学家1号
哲学家4号
哲学家2号
哲学家3号
1
5
3
2
4
哲学家5号
.
解决方法一:至多只允许四位哲学家同时去拿左边的筷子
1号哲学家开始进餐,完成后放下筷子,其它哲学家开始进餐
哲学家1号
哲学家4号
哲学家2号
哲学家3号
哲学家5号
解决方法二:仅当哲学家左右两边筷子都能用才允许拿筷子
设1号进餐,则
3,4两位哲学
家可以拿筷子
1号进餐完毕,放下筷子,先左后右.
1号放下左边筷子的同时,3号可拿起右边筷子
3号开始进餐,同时1号放下右边的筷子
此时4号条件不再满足,放下筷子.
此时5号条件满足,可在下一时钟周期拿左筷子
哲学家4号
哲学家1号
哲学家2号
哲学家3号
1
5
2
4
哲学家5号
解决方法三:奇数先拿左边,偶数先拿右边
这种方法将出现1,2号哲学家单键1号筷子,3,4号哲学家竞争3号筷子的情况.
而5号没有人与他竞争,得到左边的筷子
若4号在与3号的竞争中得到筷子,则与5号竞争4号筷子.
无论4号5号谁得到4号筷子,都有一个可以进餐
若4号在与3号的竞争中没有得到筷子,则5号得到4号筷子,进餐
放映完毕
感谢您的观赏