目錄
這是一個經典的同步問題和死鎖問題的模型,用以說明在并發計算中多進程資源競爭時可能產生的死鎖等問題。
問題的場景描述
想象有五位哲學家圍坐在一張圓桌旁,他們的生活非常簡單,只做兩件事:思考和吃飯。
- 桌子中間有一大碗面條(或米飯)。
- 桌子上有五根筷子(或叉子),分別放在每兩位哲學家之間(總共五根)。
- 每位哲學家需要兩根筷子才能開始吃飯(即他左邊和右邊的筷子)。
- 哲學家在吃飯時,不會放下筷子。
- 吃完飯后,他會放下兩根筷子,繼續思考。
問題的關鍵在于: 哲學家們之間沒有任何交流,他們只能嘗試拿起或放下身邊的筷子。如何設計一套規則(算法),保證所有哲學家都能在不被餓死的情況下,高效地吃飯和思考?
浙公網安備 33010602011771號