contributed by < LindaTing0106 >
TODO: 閱讀 並行程式設計: 實作輕量級的 Mutex Lock 並重現實驗,紀錄問題
前提
早期的並行程式在運行時,為了避免執行緒在 critical section 發生競爭,當執行緒進入 critical section 時有兩種處理方式,一種為每次都呼叫 system call 交給核心檢查是否有競爭發生,但這會造成不必要的成本花費。
另一種方式為使用 spinlock 將不能進入 critical section 的執行緒鎖住,但此舉造成 CPU 資源無法釋放,且在多核系統上需要另做處理。
Futex 的誕生,使得執行緒在 user space 上就可以檢查是否有競爭發生,如果有競爭發生再透過核心去處理,減少不必要的成本。
Mutex lock