为了账号安全,请及时绑定邮箱和手机立即绑定

如何清除sync.Map

如何清除sync.Map

Go
慕后森 2022-06-13 10:12:55
选项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 的简单地图。如果您这样做,要清除地图,您只需在持有锁的同时创建并分配一个新地图。


查看完整回答
反对 回复 2022-06-13
  • 1 回答
  • 0 关注
  • 535 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号