golang 中map併發讀寫操作

go中map併發使用是不安全的,當你使用goroutine同時對一個map進行讀寫操作時,不確定會發生什麼(由於讀寫執行順序不確定造成的).針對這種情況,我們要添加讀寫鎖對sync.RWMutex其進行同步.

var counter = struct{
    sync.RWMutex
    m map[string]int
}{m: make(map[string]int)}

從counter讀取數據,使用讀鎖

counter.RLock()
n := counter.m["some_key"]
counter.RUnlock()
fmt.Println("some_key:", n)

向counter寫數據,使用寫鎖

counter.Lock()
counter.m["some_key"]++
counter.Unlock()

參考:http://blog.golang.org/go-maps-in-action
發佈了41 篇原創文章 · 獲贊 24 · 訪問量 61萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章