最近我阅读了这篇关于餐饮哲学家问题的维基百科文章,但我不清楚 Chandy / Misra 的解决方案。
根据文章,“当一个拿着叉子的哲学家收到请求消息时,如果叉子是干净的,他会保留叉子,如果叉子脏了就放弃。” 在这个问题的上下文中,如果他正在吃东西,他会通过它,如果他还没有开始吃东西,他会保留它。
根据场景,Dirty 是什么意思?线程正在运行还是已经退出?
最近我阅读了这篇关于餐饮哲学家问题的维基百科文章,但我不清楚 Chandy / Misra 的解决方案。
根据文章,“当一个拿着叉子的哲学家收到请求消息时,如果叉子是干净的,他会保留叉子,如果叉子脏了就放弃。” 在这个问题的上下文中,如果他正在吃东西,他会通过它,如果他还没有开始吃东西,他会保留它。
根据场景,Dirty 是什么意思?线程正在运行还是已经退出?
脏意味着处理已经开始,因此可以中断。
只有当你有两个分叉时,你才能处理。
Dirty 似乎意味着“空闲”或“可用”,而 clean 意味着“必须请求它”或“抢占它”。
它说如果他捡起一个叉子是“脏的”(当他想要叉子时没有争用它),如果他必须请求它,它是“干净的”,并且它的初始状态是脏的。
拿起一个可用的叉子 => 叉子脏了 => 清理它并在被问到时放弃它。
没有可用的叉子 => 必须要求它 => 将收到它清理。
它让我想起了名为Don't Interrupt an Interrupt的组织模式。