Go 初體驗 - 併發與鎖.1 - sync.Mutex 與 sync.RWMutex

==== Mutex爲互斥鎖,顧名思義,被Mutex鎖住的代碼同時只容許一個協程訪問,其它協程進來就要排隊併發

如何使用?看代碼:協程

輸出:blog

釋義:資源

併發1000個協程同時更改m的元素,這樣會有一部分更改爲功,可是還有一部分會出現竟態,形成併發錯誤,輸出結果很明瞭im

如何避免:cpu

放開26行,30行即可img

做用是鎖住臨界區28行,這樣就能保證28行同時只有一個協程訪問,其餘協程進來得排隊,等待上一個協程釋放資源,即解鎖。co

 ==== RWMutex爲讀寫鎖錯誤

容許多個讀者訪問共享資源,可是隻能有一個寫者。不能同時既有讀者又有寫者。讀者的個數和cpu核心數相關,用戶與Mutex相同ps

相關文章
相關標籤/搜索