内存重排和sync.map

【Go】内存同步_如雨随行的博客-CSDN博客

曹大谈内存重排 - Stefno - 博客园

https://github.com/cch123/golang-notes/blob/master/memory_barrier.md

从 Memory Reordering 说起

https://www.cs.utexas.edu/~bornholt/post/memory-models.html

[译] 什么是缓存 false sharing 以及如何解决(Golang 示例) - 掘金

关于为何 sync.map 没有 Len 方法,参考资料里给出了 issuebcmills 认为对于并发的数据结构和非并发的数据结构并不一定要有相同的方法。例如,map 有 Len 方法,sync.map 却不一定要有。就像 sync.map 有 LoadOrStore 方法,map 就没有一样。

有些实现增加了一个计数器,并原子地增加或减少它,以此来表示 sync.map 中元素的个数。但 bcmills 提出这会引入竞争:atomic 并不是 contention-free 的,它只是把竞争下沉到了 CPU 层级。这会给其他不需要 Len 方法的场景带来负担。

深度解密 Go 语言之 sync.map - Stefno - 博客园

https://segmentfault.com/a/1190000018657984

不得不知道的Golang之sync.Map源码分析 - 掘金

由浅入深聊聊Golang的sync.Map - 掘金

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值