https://github.com/cch123/golang-notes/blob/master/memory_barrier.md
https://www.cs.utexas.edu/~bornholt/post/memory-models.html
[译] 什么是缓存 false sharing 以及如何解决(Golang 示例) - 掘金
关于为何 sync.map
没有 Len 方法,参考资料里给出了 issue,bcmills
认为对于并发的数据结构和非并发的数据结构并不一定要有相同的方法。例如,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