内存重排和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 - 掘金

猜你喜欢

转载自blog.csdn.net/zaimeiyeshicengjing/article/details/123048502