哲學家就餐問題
1樓:朱曾巫馬雅霜
兩個地方應該是pv操作,pv都是操作元語,不可中斷p操作是將訊號量-1
v操作是將訊號量+1
pv一定要配對使用。
哲學家進餐可以通過訊號量機制解決,避免死鎖註釋如下:
voidtest(int
i)//測試哲學家i是否滿足eating條件//通過p操作後進入eating,否則在p(s[i])處阻塞}state[i]=thinking;
初始化狀態位。
s[i]=0;
初始化s[i]
訊號量void
philosopher(int
i)p(mutex);
對mutex加鎖,防止多個程序同時對state[i]操作state[i]=thinking;
設定i狀態。
test([i-1]%5);
為左邊和右邊測試並設定s狀態。
test([i+1]%5);
v(mutex);
釋放訊號量}
2樓:
五位哲學家坐在一張圓桌,桌子**的乙個前空盤通心粉每人,每兩個男人之間放一根筷子行為的每乙個哲學家的想法,感覺餓了,然後吃通心粉吃麵食,每個哲學家必須兩根筷子,而且每個人只能直接從左邊或右邊,拿起筷子。
定義n 5無效哲學家(int i)的 }
為了防止死鎖發生時所採取的措施:
最多允許4個哲學家圍坐在桌子同時,只有當左,右兩側的哲學家筷子是可以的,只是為了讓他的筷子,(?所有的哲學家數,奇數號的哲學家必須首先走左邊的筷子,偶數哲學家,反之亦然,為了避免死鎖, ,哲學家分為三種狀態,思考,飢餓,吃飯,和時間拿到兩筷子,或不採取。
在哲學家就餐問題的解決方案( 1)
定義n 5無效哲學家(我) }
哲學家就餐問題的解決方案(2)
定義n 5定義的思考0
定義hungry 1
定義吃2 br />#的typedef int訊號;
int狀態[n];
訊號量互斥= 1;
訊號[n];
無效測試(int i)
無效哲學家(我) }
狀態[ =思維。
i] = 0
事實上,我不明白。
3樓:臸鏡
因為是一張圓的桌子,桌子坐五個人,每個人的右手邊有一支筷子(桌子上共5只),2號坐在1號的左邊,那麼1號拿左手邊的筷子和2號拿右手邊的筷子便是取同一支筷子,3,4號同理。
點反對的人是非要我補這張圖麼?看清楚題主問的什麼好伐?有要**麼?一天就知道上網找**抄不會自己寫的也是人才。
哲學家進餐問題的管程機制
4樓:網友
在用訊號量機制解決同步問題時,往往比較繁瑣,採用物件導向的思想,將資源及資源的共享操作封裝起來,用管程來管理,實現哲學家進餐問題,使用起來更加方便。
演算法實現描述如下:
1)建立管程。
monitor pc
2)使用管程。
第1個哲學家的活動:
void philosopher(int i)}
希臘有哪些哲學家,古希臘哲學家有哪些?
泰勒斯 萬物的源頭是水 赫拉克利特 世界是一團熊熊的烈火 蘇格拉底,柏拉圖,普羅泰戈爾 蠟燭在大也沒有楊貴妃的錢多 但是如果銀河系愛上了螞蟻 那麼宇宙就輸給了奈米 所以人一定要懂得放棄 古希臘哲學家有哪些?阿那克薩哥拉 anaxagoras 阿那克西曼德 anaximander 繪製第一張全球地圖的...
國外有哪些哲學家,西方著名的哲學家有哪些?
一 古希臘 泰勒斯 畢達哥拉斯 赫拉克利特,德拉克利特 伊壁鳩魯 蘇格拉底 柏拉圖 亞里斯多德等等 二 古羅馬 西塞羅 盧克萊修 斐洛 愛比克泰德 德爾圖良 第歐根尼 普羅提諾等等 三 中世紀 奧古斯丁 德爾圖良 阿爾伯特等等四 近現代 弗蘭西斯 培根 笛卡爾 斯賓諾莎 洛克 萊布尼茨 康德 邊沁 ...
尼采算是哲學家嗎,尼采算是乙個哲學家嗎?
算,而且是非常重來要的哲學家,自如果你仔細讀過西方哲學史的話,你就應該知道,整個二十世紀的哲學,尤其是存在主義,受尼采影響是非常深的。他不算哲學家,又有幾個人算?還有就是,他大多數重要著作完成之時,其實精神狀態基本正常 白痴和天才只有一線之差.這句話聽過吧 問題不在於他是什麼,而在於你聽到了什麼 如...