哲學家問題
**問題描述:
乙個房間內有5個哲學家,他們的生活就是思考和進食。房間裡有一張圓桌,中間放著一盤通心粉(假定通心粉無限多)。桌子周圍放有五把椅子,分別屬於五位哲學家每兩位哲學家之間有一把叉子,哲學家進食時必須同時使用左右兩把叉子。
解答:
程序:philosopher - 哲學家
共有的資料結構&過程:
state: array [0..4] of (think,hungry,eat);
ph: array [0..4] of semaphore;
— 每個哲學家有乙個訊號量,初值為0
mutex: semaphore;
— mutex保護臨界區,初值=1
procedure test(i:0..4); }
philosopher(i:0..4): }
程序同步 互斥 哲學家進餐問題
1 問題描述 一張圓桌上有5名哲學家,沒兩個哲學家之間有一根筷子,桌子中間由一碗公尺飯。當哲學家飢餓時會試圖分別拿起左右兩根筷子,如果筷子已在他人手上則需等待。飢餓的哲學家只有拿起兩根筷子才能進餐,吃完後才能放下筷子。2 問題分析 對哲學家分別編號0,1,2,3,4,對筷子編號0,1,2,3,4。i...
哲學家就餐問題 互斥鎖
哲學家就餐問題可以這樣表述,假設有五位哲學家圍坐在一張圓形餐桌旁,做以下兩件事情之一 吃飯,或者思考。吃東西的時候,他們就停止思考,思考的時候也停止吃東西。餐桌中間有一大碗義大利面,每兩個哲學家之間有乙隻餐叉。因為用乙隻餐叉很難吃到義大利面,所以假設哲學家必須用兩隻餐叉吃東西。他們只能使用自己左右手...
經典程序同步問題 哲學家進餐
問題描述 一張圓桌上坐著5名哲學家,每兩名哲學家之間的桌上擺著一根筷子,兩根筷子中間是一碗公尺飯,如圖所示 圖來自於王道作業系統課本 哲學家只會思考和進餐,哲學家在思考時,並不影響其他人。只有當哲學家飢餓時,才試圖拿起左 右兩根筷子 一根一根拿起 若筷子在其他人手上,則需等待。飢餓的哲學家只有同時拿...