哲学家吃饭问题

问题描述:

哲学家吃饭问题
*设有5个哲学家,共享一张放有5把椅子的桌子,每人分得一把椅子,
*但是,桌子上共有5只筷子,在每人两边各放一只,哲学家们在肚子饥饿
*时才试图分两次从两边拿起筷子就餐.
*条件:
*1)拿到两只筷子时哲学家才开始吃饭.
*2)如果筷子已在他人手上,则该哲学家必须等他人吃完之后才能拿到筷子.
*3)任一哲学家在自己未拿到两只筷子前却不放下自己手中的筷子.
*要求:
*1)描述一 个保证不会出现两个邻座同时要求吃饭的通信算法.
*2)描述一个即没有两个邻座同时吃饭,有没有饿死(永远拿不到筷子)的算法

#include #include #define people 5#define meat 10 //肉块的数量static int Tman[people];int n = 1; //定义n为共吃肉的数量/////////////////////定义一些需要跟哲学家对应的数组///////////////////////static i...