哲学家就餐问题 - 需要澄清
-
21-08-2019 - |
题
最近我读到 这篇维基百科文章 关于哲学家就餐问题,但我不清楚 Chandy / Misra 的解决方案。
根据这篇文章,“当一个拿着叉子的哲学家收到请求消息时,如果叉子是干净的,他会保留它,但当它脏了时,他会放弃它。在这个问题的背景下,如果他正在吃东西,他会通过它,如果他还没有开始吃东西,他会保留它。
根据场景,“脏”的含义是什么?线程正在运行还是已结束?
解决方案
脏意味着处理已经开始,因此它可以被中断。
和你只能过程中,如果你有两个叉子。
其他提示
脏似乎意味着“空闲”或“可用”,而干净意味着“必须请求它”或“抢占它”。
它说,如果他拿起叉子,则叉子是“脏的”(当他想要叉子时,叉子没有被争用),如果他必须请求叉子,则叉子是“干净的”,并且叉子的初始状态是脏的。
拿起可用的叉子=>叉子脏了=>清洁它并在要求时放弃它。
没有可用的叉子 => 必须索取 => 将收到清洁的叉子。
这让我想起了一种组织模式 不要打断中断.
不隶属于 StackOverflow