哲学家就餐问题

题目

前提:哲学家吃意面必须要两支叉子

可以看到,如果每一个进程(哲学家)都请求左边的一支叉子,将会出现死锁(谁也吃不到意面的情况),这不满足有限等待的原则。所以当每一位哲学家申请第一支叉子前先封锁桌面,这样谁也不能再动叉子,两支叉子拿好后再解锁。

一个哲学家吃饭的过程:“都不准pick叉子!”——>拿起左边叉子——>拿起右边叉子——>"好了现在你们可以pick了"

改进算法

证明

  

显然可以拿起右边的叉子然后去吃饭啦 

  • 拿起一支叉子前右边的没被占用 
  • 拿起一支叉子前右边的已经被占用

那么右边的一定已经在吃饭了,等他吃完饭释放叉子就行。假设右边的没在吃饭,那么右边的就一定没有解锁桌面,该哲学家就没有再次封锁桌面的资格。  

阅读更多

没有更多推荐了,返回首页