go语言sync.map的使用

为什么使用? 

 sync.map是处理map并发不安全的问题。

对于map,我们常用的做法就是加锁。

对于sync.Map这些操作则是不需要的,来看下sync.Map的特点:

  • 1、以空间换效率,通过read和dirty两个map来提高读取效率
  • 2、优先从read map中读取(无锁),否则再从dirty map中读取(加锁)
  • 3、动态调整,当misses次数过多时,将dirty map提升为read map
  • 4、延迟删除,删除只是为value打一个标记,在dirty map提升时才执行真正的删除

如何使用?

 func main() {
   //sync.Map 的方法进行调用,Store 表示存储,Load 表示获取,Delete 表示删除。
 	var scence  sync.Map

 	//将键值对保存到sync.map中
 	scence.Store("xiaoming",97)
 	scence.Store("xiaohong",92)
 	scence.Store("xiaobai",99)

 	//将sync.map中根据键取值
 	fmt.Println(scence.Load("xiaohong"))

 	//根据键删除对应的键值对
 	scence.Delete("xiaoming")

 	//遍历所有sync.map中的键值对
 	scence.Range(func(k, v interface{}) bool {
		fmt.Println("遍历:",k,v)
		return  true
	})
 }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值