Chandy / Misra用餐哲学家的解决方案

时间:2015-05-12 21:56:03

标签: algorithm concurrency operating-system synchronization dining-philosopher

因此,基于本维基百科的{Chandy / Misra部分article,我们有5位哲学家编号为P1-P5。

基于这句话:

  

对于争夺资源的每一对哲学家,创建一个分叉并将其交给具有较低ID的哲学家(代理人Pn为n)。每个叉子可以是脏的或干净的。最初,所有货叉都很脏

     

当一个带叉子的哲学家接收到请求消息时,如果它是干净的话,他会保留分叉,但是当它是脏的时候将它放弃。如果他把叉子送过来,他会在这之前清理叉子。

因此,在知道所有叉子最初都是脏的情况下,请考虑以下quote及其下方的图像。

  

对于每对Swansons,将叉子交给身份较小的人。

我的问题是,如果P3现在从他的邻居P2请求第二个分叉,那么P2会放弃他的单叉,因为它很脏,即使他刚拿起它?

1 个答案:

答案 0 :(得分:0)

P3不能向P4询问fork,因为他已经有了fork(符合图片)。

叉P4保持只能由P4和P5共享(根据问题,您只能向邻居询问叉子,这意味着 P3只能在P3和P2之间进行分叉, P3& P4之间的分支
换句话说, P4不能给P3分叉,目前位于P4和P5之间

因此,P3必须等到P2给他第二个叉子

**编辑**
是的P2会放弃叉子,因为它很脏