最近我读到 这篇维基百科文章 关于哲学家就餐问题,但我不清楚 Chandy / Misra 的解决方案。

根据这篇文章,“当一个拿着叉子的哲学家收到请求消息时,如果叉子是干净的,他会保留它,但当它脏了时,他会放弃它。在这个问题的背景下,如果他正在吃东西,他会通过它,如果他还没有开始吃东西,他会保留它。

根据场景,“脏”的含义是什么?线程正在运行还是已结束?

有帮助吗?

解决方案

脏意味着处理已经开始,因此它可以被中断。

和你只能过程中,如果你有两个叉子。

其他提示

脏似乎意味着“空闲”或“可用”,而干净意味着“必须请求它”或“抢占它”。

它说,如果他拿起叉子,则叉子是“脏的”(当他想要叉子时,叉子没有被争用),如果他必须请求叉子,则叉子是“干净的”,并且叉子的初始状态是脏的。

  • 拿起可用的叉子=>叉子脏了=>清洁它并在要求时放弃它。

  • 没有可用的叉子 => 必须索取 => 将收到清洁的叉子。

这让我想起了一种组织模式 不要打断中断.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top