寫程式,免不了要常常在使用非同步機制,對於資源存取的鎖定與獨佔以避免造成不同的thread 或 process 使用到相同的資源(ex 不同的 thread 同時寫入內容到檔案,造成內容錯誤)
而裡面常會用到 Semaphere & Mutex 來做到 critical section ,自己也常會搞混,那就不如記下來方便備查:
Semaphere & Mutex 都是處理同步機制
而裡面常會用到 Semaphere & Mutex 來做到 critical section ,自己也常會搞混,那就不如記下來方便備查:
Semaphere & Mutex 都是處理同步機制
- semaphore 可以設定有多少個 process 存取資源 (利用一個 count),假如存取的 process數量到達 Count 的值,其他的 process 會被送到一個 wait queue 的佇列中,等待有process釋放資源(這時 Count 會減1),再繼續執行。
- Mutex就像是把鑰匙,記錄是哪個 process 拿到了這把鑰匙的所有權,process取得鑰匙後就能進到 critical section 存取資源,等到存取完成把鑰匙的所有權釋出歸還讓其它的 process 能夠使用,達到 mutual exclusion
留言
張貼留言