geelaw
21 天前
是两个正交的概念,三色标记 GC 里的 read/write barrier 是指读写 GC 管理的引用之前,编译器插入从而导致运行的代码(辅助 GC 算法),memory fence 是多线程程序里确保某些内存操作在多线程下可观测顺序的指令(因为 CPU 会乱序执行,通常只能保证结果在单线程下无区别,加入 memory fence 可以约束多线程下的内存操作顺序)。
并行 GC 肯定是需要一些同步操作的,可以用 lock/mutex ,这样就自带内存操作的同步,如果要写无锁的,也可以考虑用 memory fence 确保内存操作。因此一个 GC 里面可能会同时使用 read/write barrier 和 memory fence 。
最后,memory fence 也可以叫做 memory barrier 。
————
楼主引用的段落第一个分句就有严重的语病:
>内存屏障技术是一种屏障指令
>技术是指令
这句话的正确说法是
>内存屏障是一种指令
>内存屏障技术/技巧是利用特殊指令约束指令乱序执行和多线程下内存操作顺序的方法
然后我随便翻了一下那本书的前几页,真是惨不忍睹:
>发展到今天已经有过去了 10 多年
有、过去了 句式杂糅。
>目前的 Go 语言在国内外的社区都非常热门
第一个“的”不符合汉语使用习惯。
>很多著名的开源框架,例如:Kubernetes 、etcd 和 Prometheus 等都使用 Go 语言开发,近年来热门的微服务架构和云原生技术也为 Go 语言社区带来了非常多的活力。
冒号管辖范围错误。
>也坚定地认为这门语言未来的发展会越来愈好。
越来越、愈来愈 杂糅。
>很多文章都会陷入对不重要的细节,大量的篇幅都是复制的源代码,分析介绍的过程也没有分清主次,不能提供很好的阅读体验。
句式不符合汉语习惯,应该是“陷入对不重要的细节的纠结”。
我不确定这些充斥大量语病的内容是怎么出版出来的,作者、编辑、校对都没有上心?