哲学家就餐问题

时间:2021-12-18 00:11:07
背景:哲学家就餐问题可以这样表述,假设有五位哲学家围坐在一张圆形餐桌旁,做以下两件事情之一:吃饭,或者思考。吃东西的时候,他们就停止思考,思考的时候也停止吃东西。餐桌中间有一大碗意大利面,每两个哲学家之间有一只餐叉。假设哲学家必须用两只餐叉吃东西。他们互相不沟通,怎样确保不会有人饿死。


以下是资源分级解法的说明,我想问的是:如果按下面的方法,但是改为就餐后先放下较低的,再放下较高的。会有问题吗?



分配一个偏序或者分级的关系,并约定所有资源都按照这种顺序获取,按相反顺序释放,而且保证不会有两个无关资源同时被同一项工作所需要。在哲学家就餐问题中,资源(餐叉)按照某种规则编号为1至5,每一个工作单元(哲学家)总是先拿起左右两边编号较低的餐叉,再拿编号较高的。用完餐叉后,他总是先放下编号较高的餐叉,再放下编号较低的。

3 个解决方案

#1


有点意思,我也来做一做

#2


这是《现代操作系统》一书中对该问题的解法,建议楼主看一看
http://book.51cto.com/art/200907/138168.htm

#3


应该不会有问题吧,我当年考研时学过,我记得是必须同时拿到两个筷子才能就餐,不过对放筷子没什么要求把

#1


有点意思,我也来做一做

#2


这是《现代操作系统》一书中对该问题的解法,建议楼主看一看
http://book.51cto.com/art/200907/138168.htm

#3


应该不会有问题吧,我当年考研时学过,我记得是必须同时拿到两个筷子才能就餐,不过对放筷子没什么要求把