哲學家就餐問題

2021-08-26 17:55:02 字數 450 閱讀 3135

前提:哲學家吃意麵必須要兩支叉子

可以看到,如果每乙個程序(哲學家)都請求左邊的一支叉子,將會出現死鎖(誰也吃不到意麵的情況),這不滿足有限等待的原則。所以當每一位哲學家申請第一支叉子前先封鎖桌面,這樣誰也不能再動叉子,兩支叉子拿好後再解鎖。

乙個哲學家吃飯的過程:「都不准pick叉子!」——>拿起左邊叉子——>拿起右邊叉子——>"好了現在你們可以pick了"

顯然可以拿起右邊的叉子然後去吃飯啦 

那麼右邊的一定已經在吃飯了,等他吃完飯釋放叉子就行。假設右邊的沒在吃飯,那麼右邊的就一定沒有解鎖桌面,該哲學家就沒有再次封鎖桌面的資格。  

哲學家就餐問題

本文是哲學家就餐問題在 linux 上的程式實現,與windows 平台的實現類似,程式上稍有不同。philosopherdining.cpp include include include include include include rasutil.h using namespace std ...

哲學家就餐問題

pragma once include include include include include include include include include include include include include stdafx.h handle chopstick 5 room l...

哲學家就餐問題

假設有五位哲學家圍坐在一張圓形餐桌旁,做以下兩件事情之一 吃飯,或者思考。吃東西的時候,他們就停止思考,思考的時候也停止吃東西。餐桌中間有一大碗義大利面,每兩個哲學家之間有乙隻餐叉。因為用乙隻餐叉很難吃到義大利面,所以假設哲學家必須用兩隻餐叉吃東西。他們只能使用自己左右手邊的那兩隻餐叉。哲學家就餐問...