Algorithm 钱迪/米斯拉餐饮解决方案

Algorithm 钱迪/米斯拉餐饮解决方案,algorithm,concurrency,operating-system,synchronization,dining-philosopher,Algorithm,Concurrency,Operating System,Synchronization,Dining Philosopher,根据这本维基百科的钱迪/米斯拉章节,我们有5位哲学家,编号为P1-P5 根据此报价: 对于争夺资源的每一对哲学家,创建一个fork并将其交给ID较低的哲学家(n代表代理Pn)。每个叉子可以是脏的,也可以是干净的。起初,所有的叉子都是脏的 当一个有叉子的哲学家收到一个请求消息时,如果叉子是干净的,他会保留它,但是如果叉子是脏的,他会放弃它。如果他把叉子送过去,他会先把叉子清理干净 因此,如果知道所有的叉子最初都是脏的,那么请注意下面的图片和下面的图片 对于每一对Swanson,将叉子交给id较小的

根据这本维基百科的钱迪/米斯拉章节,我们有5位哲学家,编号为P1-P5

根据此报价:

对于争夺资源的每一对哲学家,创建一个fork并将其交给ID较低的哲学家(n代表代理Pn)。每个叉子可以是脏的,也可以是干净的。起初,所有的叉子都是脏的

当一个有叉子的哲学家收到一个请求消息时,如果叉子是干净的,他会保留它,但是如果叉子是脏的,他会放弃它。如果他把叉子送过去,他会先把叉子清理干净

因此,如果知道所有的叉子最初都是脏的,那么请注意下面的图片和下面的图片

对于每一对Swanson,将叉子交给id较小的人


我的问题是,如果P3现在向邻居P2请求第二个叉子,P2是否会因为叉子脏而放弃他的叉子,即使他刚刚捡起它?

P3不能向P4请求叉子,因为他已经有叉子了(根据图片)

P4持有的叉子只能由P4和P5共享(根据问题,您只能向邻居索要叉子,这意味着P3只能使用P3和P2之间的叉子以及P3和P4之间的叉子
换句话说,P4不能给P3当前介于P4和P5之间的分叉

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

**编辑**

是的,P2将放弃叉子,因为叉子很脏

@samgak谢谢你修复标点符号。也许你对这个问题有答案吗?是的,你是对的。这个问题提得很糟。在上一节中,我将p4改为p2。这是否意味着p2会在p3请求叉子时放弃叉子,因为叉子很脏?