最近协程并发写map导致错误:concurrent map read and map write。直接把服务干挂了。
原因:
因为golang的原生map是非并发安全的,所以为了保证map的并发安全,最简单的方式就是给map加锁
加锁
锁相关详解请参考:https://blog.csdn.net/zf766045962/article/details/105431908
type Demo struct{
Lock sync.RwMutex
}
go func() {
d.Lock.Lock()
defer d.Lock.UnLock()
}
利用channel处理
利用sync.map