今日看19年的408的哲學家吃飯問題,對同步鎖的位置有些困惑,與生產消費者的鎖的問題是剛好相反的。
比如19年的題
有n(n≥3)位哲學家圍坐在一張圓桌邊,每位哲學家交替地就餐和思考。在
圓桌中心有m(m≥1)個碗,每兩位哲學家之間有一根筷子。每位哲學家必須取到乙個碗和兩
側的筷子後,才能就餐,進餐完畢,將碗和筷子放回原位,並繼續思考。為使盡可能多的哲學
家同時就餐,且防止出現死鎖現象,請使用訊號量的p、v 操作[wait()、signal()操作]描述上
述過程中的互斥與同步,並說明所用訊號量及初值的含義。
semaphore mutex=(n-1)這裡的鎖資源是放在進入拿資源的前面
只要在拿筷子前面就ok
而如果是生產者消費者問題
可以發現
ar items = 0, space = 10, mutex = 1;
var in = 0, out = 0;
item buf[10] = ;
producer
}consumer
}
鎖是在最裡面的
如果鎖在最外面 ,那麼如果 進入鎖之後 ,如果直接為空 ,直接死鎖。。
這就是完全沒有聯絡的問題。。。。。。不要糾結了
關於os路徑的位置
記錄下os.path.dirname file 使用 os.path.dirname file 使用 該測試指令碼所在的位置 d 第1層 第2層 第3層 第4層 第5層 test11.py test11.py import os 該檔案所在位置 d 第1層 第2層 第3層 第4層 第5層 test1...
同步鎖synchronized中的類鎖,物件鎖
關於同步鎖的幾篇有用的文章 如果synchronized 修飾的非靜態方法 沒有static修飾 則鎖的是例項物件,物件鎖 synchronized this 使用的也是物件鎖 如果synchronized 修飾的是靜態方法,則鎖的是類物件,是類鎖 synchronized synchronized...
OS中的自對映問題
對於每個程序而言都能看到 4g的記憶體,乙個頁是 4k,一共有 4g 4k 2 20 個頁。每個程序中都有自己的乙個頁目錄 一級頁表 這個頁目錄可以管轄 1024 個二級頁表,充足情況下程序會有 1024 個二級頁表。那麼這 1024 個頁對於使用者來說就不用了,可以從 2 20 個頁表中去除,實際...