天天看點

Go 語言聖經 9.2 sync.Mutex互斥鎖 9.3 sync.RWMutex讀寫鎖9.2 sync.Mutex互斥鎖9.3 sync.RWMutex讀寫鎖

9.2 sync.Mutex互斥鎖

知識點

  • 1.一個隻能為1和0的信号量叫做二進制信号量(binary semaphore)
  • 2.這種互斥很實用,而且被sync包裡的Mutex類型直接支援
  • 3.Lock和Unlock的調用是在所有路徑中都嚴格配對的
  • 4.一個deferred Unlock即使在臨界區發生panic時依然會執行
  • 5.defer調用隻會比顯式地調用Unlock成本高那麼一點點,不過卻在很大程度上保證了代碼的整潔性

9.3 sync.RWMutex讀寫鎖

  • 1.一種特殊類型的鎖,其允許多個隻讀操作并行執行,但寫操作會完全互斥
  • 2.這種鎖叫作“多讀單寫”鎖(multiple readers, single writer lock),Go語言提供的這樣的鎖是sync.RWMutex
  • 3.RLock隻能在臨界區共享變量沒有任何寫入操作時可用
  • 4.RWMutex隻有當獲得鎖的大部分goroutine都是讀操作,而鎖在競争條件下,也就是說,goroutine們必須等待才能擷取到鎖的時候,RWMutex才是最能帶來好處的

代碼

//等待你們的完善
           
——不足之處,歡迎補充——

備注

《Go 語言聖經》

  • 學習記錄所使用的GO版本是1.8
  • 學習記錄所使用的編譯器工具為GoLand
  • 學習記錄所使用的系統環境為Mac os
  • 學習者有一定的C語言基礎

代碼倉庫