關於哲學家進餐問題 40

2025-03-25 19:40:14 字數 1581 閱讀 1043

哲學家就餐問題

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 繪製第一張全球地圖的...

國外有哪些哲學家,西方著名的哲學家有哪些?

一 古希臘 泰勒斯 畢達哥拉斯 赫拉克利特,德拉克利特 伊壁鳩魯 蘇格拉底 柏拉圖 亞里斯多德等等 二 古羅馬 西塞羅 盧克萊修 斐洛 愛比克泰德 德爾圖良 第歐根尼 普羅提諾等等 三 中世紀 奧古斯丁 德爾圖良 阿爾伯特等等四 近現代 弗蘭西斯 培根 笛卡爾 斯賓諾莎 洛克 萊布尼茨 康德 邊沁 ...

尼采算是哲學家嗎,尼采算是乙個哲學家嗎?

算,而且是非常重來要的哲學家,自如果你仔細讀過西方哲學史的話,你就應該知道,整個二十世紀的哲學,尤其是存在主義,受尼采影響是非常深的。他不算哲學家,又有幾個人算?還有就是,他大多數重要著作完成之時,其實精神狀態基本正常 白痴和天才只有一線之差.這句話聽過吧 問題不在於他是什麼,而在於你聽到了什麼 如...