2

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

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

根据场景,Dirty 是什么意思?线程正在运行还是已经退出?

4

2 回答 2

2

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

只有当你有两个分叉时,你才能处理。

于 2009-05-14T03:51:59.623 回答
0

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

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

  • 拿起一个可用的叉子 => 叉子脏了 => 清理它并在被问到时放弃它。

  • 没有可用的叉子 => 必须要求它 => 将收到它清理。

它让我想起了名为Don't Interrupt an Interrupt的组织模式。

于 2009-05-14T03:22:53.903 回答