基於VC6 0和MFC實現的作業系統哲學家進餐問題

2021-09-05 09:54:57 字數 509 閱讀 3140

一 需求分析

乙個圓桌上有一大碗麵,5個盤子,5把筷子,5個座位上可以座5個哲學家,當哲學家就坐以後,其左右有且僅有乙個筷子,每個筷子左又有且僅有乙個哲學家。哲學家動作:思考,取筷(需要兩個),取面,吃麵。現設計乙個禮儀以允許他們就餐,需要避免兩個哲學家「搶」同一把筷子,又要避免飢餓和死鎖。

通過設計,編寫,除錯乙個簡單的程序排程模擬系統,對程序排程,程序執行狀態變換及wait原語和signal原語加深理解和掌握。

二 程式設計

程式流程圖如下所示:

三 程式實現

3.1 實現原理

互斥解決。每一把筷子使用乙個2元訊號量,只有獲得訊號量的哲學家才能使用筷子,從而避免對筷子的「搶奪」

VC 6 0 移位操作

本文記錄一下vc 6.0中c 語言下的移位操作,主要考慮會不會溢位,以及符號位的處理。首先區別一下算術移位與邏輯移位 算術左移同邏輯左移 算術右移高位補符號位 邏輯右移高位補0 1 左移操作 結論為 高位移出,低位補0 1 無符號數 我們考慮乙個特別的數 2147483647 恩,這個數很特別不用懷...

VC 6 0實現超連結

vc 6.0實現超連結 2011年05月03日 首先,新建乙個基於對話方塊的工程,新增乙個靜態文字框,id為idc html。caption為然後新增單擊訊息對映,新增以下 void cmydlg onhtml bool bblue false cfont cfont1 cfont cfont2 在...

VC 6 0及MFC基礎知識

這是早期的學習筆記,今天翻出來,覺得還有點價值,就 到這裡。visual c 6.0的主介面 的mfc windows 的三大模組就是以dll dynamic link librar 動態鏈結庫 的形式提供的 kernel32.dll,user32.dll,gdi32.dll 裡面就含有了 api函...