选项1:cache.Range(func(key, value interface{}) bool { cache.Delete(key) return true})选项2:cache = sync.Map{}我想刷新缓存,选项 1看起来不太好。但是当其他 goroutine 是or时,我不确定选项 2是否安全。StoringLoading
1 回答
守着一只汪
TA贡献1872条经验 获得超4个赞
sync.Map不支持删除所有元素,您的选项 1 是您在必要时如何执行此操作。
您的选项 2 更改了cache变量的值,因此如果cache从多个 goroutine 访问,此操作将导致数据竞争,除非对cache变量本身的访问是同步的。
如果您经常需要清除地图,那么sync.Map可能不是最佳选择。考虑使用sync.RWMutexthen 的简单地图。如果您这样做,要清除地图,您只需在持有锁的同时创建并分配一个新地图。
- 1 回答
- 0 关注
- 535 浏览
添加回答
举报
0/150
提交
取消
