五個哲學家,五隻筷子,只有獲得一雙筷子之後才能就餐,就有可能出現這種情況:每個哲學家都獲得了乙隻筷子,卡死在那個地方。
(1)有乙個服務生來負責避免死鎖
(2)哲學家在拿筷子的時候,確保左右都有筷子才同時拿起左右兩隻筷子
(3)規定拿筷子的方式:給筷子編號,先拿號碼小的筷子
class
chopsticks
public
synchronized
void
getchop()
catch
(interruptedexception e)
} chops.
set(index,
true);
chops.
set(
(index +1)
%5,true);
}public
synchronized
void
freechop()
class
philosopherthread
extends
thread
@override
public
void
run()}
public
void
eat(
)catch
(interruptedexception e)}}
public
class
philosophertest
}
作業系統 哲學家進餐問題
一張圓桌上坐著5名哲學家,每兩個哲學家之間的桌上擺一根筷子,桌子的中間是一火鍋。哲學家們有思考和進餐兩個動作,哲學家在思考時,並不影響他人。只有當哲學家飢餓時,才試圖拿起左 右兩根筷子 一根一根地拿起 如果筷子已在他人手上,則需等待。飢餓的哲學家只有同時拿起兩根筷子才可以開始進餐,當進餐完畢後,放下...
哲學家進餐c 作業系統
這是哲學家進餐問題的c 程式,這裡使用的進餐方式是只有當哲學家左右兩邊都有可用筷子時才可以進餐,如果只有乙隻左手筷子放下自己左手筷子。如果對其中函式有不理解的可以看我另一篇部落格程序相關函式彙總解釋,對照著看,可能方便你理解 include include include using namespa...
作業系統中哲學家進餐問題
哲學家進餐問題 一 問題 5個哲學家圍坐在乙個圓桌上,每兩個哲學家之間都有乙隻筷子,哲學家平時進行思考,只有當他們飢餓時,才拿起筷子吃飯。規定每個哲學家只能先取其左邊筷子,然後取其右邊筷子,然後才可以吃飯。二 分析 每乙隻筷子都是乙個臨界資源,設定5個互斥訊號量。semaphore stcik 5 ...