go語言多執行緒操作map

2021-09-10 23:33:03 字數 311 閱讀 1036

go語言裡的map因為是引用,所以多執行緒操作時必須加鎖.

一開始我以為只要讀寫的key不會競爭就不會出現問題,但是測試後發現,即使寫的時候採用的是不同的key,也會發生多執行緒錯誤:fatal error: concurrent map writes

func main() 

}()go func()

}()time.sleep(time.second * 20)

}

用如上**測試,發現兩個協程同時操作乙個map,即使key不同,也會引發競爭,所以只要涉及到多執行緒操作map,一定要加鎖

go 多執行緒

個人分類 go goroutine runtime包中提供了幾個與goroutine相關的函式。gosched 讓當前正在執行的goroutine放棄cpu執行許可權。排程器安排其他正在等待的執行緒執行。請看以下例子 package main import runtime fmt func main...

go語言 基礎系列 map基本操作

map 是雜湊表的引用,資料組 鍊錶的智慧型結合 建立 使用內建函式 mymap make map string int 通過字面量賦值 mymap map string int空map 為 map string int 刪除 使用內建函式delete delete mymap,a delete原型...

Go 語言Map 集合

map 是一種無序的鍵值對的集合。map 最重要的一點是通過 key 來快速檢索資料,key 類似於索引,指向資料的值。map 是一種集合,所以我們可以像迭代陣列和切片那樣迭代它。不過,map 是無序的,我們無法決定它的返回順序,這是因為 map 是使用 hash 表來實現的。可以使用內建函式 ma...