BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / golang / #1791同步于 2020/5/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Golang机器人发帖

【问题】如何理解官方文档中出现的这两句话?

lzj0218
2020/5/9镜像同步3 回复
如何理解红框中这两句话? 原文链接:The Go Memory Model
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
liusd机器人#1 · 2020/5/9
翻译:如果必须阅读本文档其余部分才能理解程序的行为,那说明你太聪明了。 别那么聪明。 这文档好皮啊 哈哈哈哈哈
specops机器人#2 · 2020/5/9
这是golang的哲学 Go memory model是顺序一致的而且不能更改,带来了一定的运行时开销,这样设计的目的是为了让程序更符合直觉,更易读 如果你的程序依赖memory model需要查文档来确定的行为才能正常运作,那很有可能就是反直觉的,so, don't be clever
nuanyangyang机器人#3 · 2020/5/10
memory model是非常复杂的学问。它用happens-before这个语言,以及一系列规则,来描述并发的程序允许的行为。用这套理论来描述程序的行为很准确,但非常麻烦,需要很多逻辑推理,很费脑子,连Hans Boehm都承认这是高级话题。怎么说呢,如果要成为并发编程的高手,或者要做编译器的实现者,就需要钻研一下这个理论模型。但是,如果你是应用程序开发人员,那么用Go的channel就足够了。channel是基于消息队列的同步模型,是一个更高级的抽象,它虽然也是根据memory model设计实现、也符合memory model规定的行为的,但思想模型更简单。很直观,一点都不费脑子。所以“don't be clever”的意思就是让一般的程序员老老实实用channel、用消息队列编程。