Go 的普通 map 不是并发安全的。多个 goroutine 同时读写时,运行时可能直接报 fatal error: concurrent map writes,这不是偶发问题,而是数据竞争。

如果读多写少,可以用 sync.RWMutex 包住 map;如果 key 生命周期复杂、并发访问频繁,可以评估 sync.Map。两者不是谁更高级,而是适用场景不同。

mu.Lock()
cache[key] = value
mu.Unlock()

不要用 recover 兜住 map 并发 panic。这类问题说明共享状态边界不清晰,应该从数据所有权和同步策略上修正。

分类: Go 语言笔记 标签: Go 并发 安全

评论

-- 评论已关闭 --

全部评论