哲学家进餐问题(The Dining Philosophers Problem)
问题描述 (由Dijkstra首先提出并解决)个哲学家围绕一张圆桌而坐桌子上放着支筷子每两个哲学家之间放一支哲学家的动作包括思考和进餐进餐时需要同时拿起他左边和右边的两支筷子思考时则同时将两支筷子放回原处如何保证哲学家们的动作有序进行?如不出现相邻者同时要求进餐不出现有人永远拿不到筷子
The PV code Using Pascal
解法一 semaphore Fork[i]:=(i=) begin Thiking; Being hangery; P(Fork[i mod ]); p(Fork[(i+)mod ]); Eating; v(Fork[i mod ]); v(Fork[(i+)mod ]); end 返回《操作系统之PV金典》 [] [] |