哲学家进餐问题——经典进程同步问题

问题描述
哲学家就餐问题可以这样表述,假设有五位哲学家围坐在一张圆形餐桌旁,做以下两件事情之一:吃饭,或者思考。吃东西的时候,他们就停止思考,思考的时候也停止吃东西。餐桌中间有一大碗意大利面,每两个哲学家之间有一只餐叉。因为用一只餐叉很难吃到意大利面,所以假设哲学家必须用两只餐叉吃东西。他们只能使用自己左右手边的那两只餐叉。哲学家从来不交谈,这就很危险,可能产生死锁,每个哲学家都拿着左手的餐叉,永远都在等右边的餐叉(或者相反)。即使没有死锁,也有可能发生资源耗尽,所以筷子是临界资源,同一根筷子只能被一位哲学家左手或右手拿起,即资源被占用,所以引出了一个资源分配的问题。

问题分析
        如图所示,因为左右相邻的哲学家之间只有一根筷子(如图红色筷子),意味着相邻的哲学家只有一位能拿起中间这跟筷子,而不可能同时拿起这跟筷子,所以我们就遇到了资源临界问题。

 资源临界
知识点引入
在进行问题解决前,我们需要有进程同步的知识储备:
P(S)原语:
①S减l;  ②若S.value减1后仍大于或等于零,则进程继续执行; ③

哲学家进餐问题——经典进程同步问题最先出现在Python成神之路

版权声明:
作者:倾城
链接:https://www.techfm.club/p/26814.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>