代码之家  ›  专栏  ›  技术社区  ›  Chathuranga Chandrasekara

餐饮哲学家问题-需要澄清

  •  2
  • Chathuranga Chandrasekara  · 技术社区  · 16 年前

    最近我读了 this Wikipedia article 关于餐饮哲学家的问题,但我不清楚钱迪/米斯拉的解决方案。

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

    根据场景,脏的含义是什么?线程正在运行还是已启动?

    2 回复  |  直到 16 年前
        1
  •  2
  •   GordyII    16 年前

    脏意味着处理已启动,因此可以中断。

    只有当你有两个叉子的时候你才能处理。

        2
  •  0
  •   ChrisW    16 年前

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

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

    • 拿起一个可用的叉子=>叉子脏了=>清洗它,并在被要求时放弃。

    • 没有可用的货叉=>必须要货叉=>将收到清洁的货叉。

    它让我想起了组织模式 Don't Interrupt an Interrupt .