哲学家就餐的问题

Exercise 1. 哲学家就餐的问题是由并发先驱E. W. Dijkstra发明的,旨在澄清死锁(dead-lock)和饥饿自由(starvation freedom)的概念。 想象一下五个哲学家,他们终其一生只是在思考和就餐。 他们坐在一张带五把椅子的圆桌旁。 每个位置前面有一大盘米饭。 但是,只有五根筷子(在原文中说的是刀叉)可用,如图1.5所示。 每个哲学家都在思考。 当他饿了,他坐下来拿起最接近他的两根筷子。 如果一个哲学家可以拿起两根筷子,他可以吃一段时间。 在一位哲学家吃完之后,他放下筷子再次开始思考。

  1. 编写一个程序来模拟哲学家的行为,每个哲学家都是一个线程,筷子是共享对象。 请注意,您必须防止两位哲学家同时持有相同筷子的情况。
  2. 修改你的程序,使其永远不会达到哲学家陷入僵局的状态(deadlocked status),也就是说,每个哲学家都持有一根筷子并且等待拿到第二根筷子的情况永远不会发生。
  3. 修改你的程序,以免任何哲学家挨饿。
  4. 编写一个程序,为任何数量的哲学家提供饥饿自由(starvation-free)的解决方案。
    Figure 1.5 Traditional dining table arrangement according to Dijkstra

问题分析

  1. 以免任何哲学家挨饿,就是说不能让哲学家饿死&#
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值