Go语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的。
问题还原
下面来看下并发情况下读写 map 时会出现的问题
func main() {
m := make(map[int]int)
go func() {
// 不停地对map进行写入
for {
m[1] = 1
}
}()
go func() {
// 不停地对map进行读取
for {
_ = m[1]
}
}()
}
会报错
fatal error: concurrent map read and map write
实现方案1 - 加锁
// 加锁的m...