map 并发读写为什么会 panic
Go 的普通 map 不是并发安全的。多个 goroutine 同时读写时,运行时可能直接报 fatal error: concurrent map writes,这不是偶发问题,而是数据竞争。
如果读多写少,可以用 sync.RWMutex 包住 map;如果 key 生命周期复杂、并发访问频繁,可以评估 sync.Map。两者不是谁更高级,而是适用场景不同。
mu.Lock()
cache[key] = value
mu.Unlock()不要用 recover 兜住 map 并发 panic。这类问题说明共享状态边界不清晰,应该从数据所有权和同步策略上修正。
版权申明
本文系作者 @blogger 原创发布在map 并发读写为什么会 panic。未经许可,禁止转载。
评论
-- 评论已关闭 --
全部评论