哲学家就餐问题。这是由计算机科学家Dijksta提出的经典死锁场景
问题描述:有5个哲学家,这些哲学家只做两件事--思考和吃饭,他们思考的时候不需要任何共享资源,但是吃饭的时候必须使用餐具,而餐具是有限的。原版的故事里,餐具是叉子,吃饭的时候要用两把叉子把面条从碗里捞出来。很显然把叉子换成筷子更合理,所以:一个哲学家需要两根筷子才能吃饭。
现在引入问题:这些哲学家很穷,只买的起5根筷子。他们做成一圈,两个人的中间放一根筷子。哲学家吃饭的时候必须同时得到左边手和右边手的筷子。如果他们身边的任何一位正在使用筷子,那他只有等着。
假设哲学家的编号为A,B,C,D,E,筷子为1,2,3,4,5,哲学家和筷子围成一圈
序号 (哲学家) 左边 右边
A 5 1
B 1 2
C 2 3
D 3 4
E 4 5
每个哲学家均为一个单独的线程,每个线程循环左以下