最近我读了关于餐饮哲学家问题的this Wikipedia article,但我不清楚Chandy / Misra解决方案。
根据文章,“当一个带叉子的哲学家接收到请求消息时,如果它是干净的话,他会保留分叉,但是当它变脏时会将它放弃。”在这个问题的背景下,如果他正在进食,他会通过它,如果他还没有开始进食,他会保留它。
根据情景,Dirty的含义是什么?线程正在运行还是有问题?
答案 0 :(得分:2)
脏表示处理已经开始,因此可以中断。
如果你有两把叉子,你只能处理。
答案 1 :(得分:0)
Dirty似乎意味着'闲置'或'可用',而干净意味着'必须要求'或'先发制人'。
它表示如果叉子捡起它是“脏的”(叉子在他想要的时候没有争用),如果他必须要求它就“干净”,并且它的初始状态是脏的。 / p>
拿起一个可用的fork => fork很脏=>清理它并在被问及时放弃。
没有可用的fork =>必须要求它=>将收到它清理。
它让我想起了名为Don't Interrupt an Interrupt的组织模式。