设有 5 个哲学家,共享一张放油把椅子的桌子,每人分得一吧椅子.
但是桌子上总共执友支筷子,在每个人两边分开各放一支.哲学家只有
在肚子饥饿时才试图分两次从两边拾起筷子就餐.
就餐条件是:
2)提出吃饭要求,并拿到支筷子后,方可吃饭;
3)如果筷子已被他人获得 ,则必须等待该人吃完饭之后才能获取
该筷子;
4)任一哲学家在自己未拿到 2 支筷子吃饭之前,决不放下手中的
筷子;
5)刚开始就餐时,只允许 2 个哲学家请求吃饭.
试问:
1)描述一个保证不会出现两个邻座同时要求吃饭的算法;
2)描述一个既没有两邻座同时吃饭,又没有人饿死的算法;
3)在什么情况下,5 个哲学家全都吃不上饭?
哲学家进餐问题是典型的同步问题.它是由 Dijkstra提出并解决的.
该问题是描述有五个哲学家 ,他们的生活方式是交替地进行思考和进
餐.哲学家们共用一张圆桌 ,分别坐在周围的五张椅子上 .在圆桌上有
五个碗和五支筷子,平时一个哲学家进行思考,饥饿时便试图取用其左
右岁靠近他的筷子 ,只有在他拿到两支筷子时才能进餐 .进餐完毕,放
下筷子继续思考.