tiancaiamao
tiancaiamao
切换到 g0 是有锁保护的,一个一个来
之前回答过了。 https://github.com/tiancaiamao/go-internals/issues/19 https://github.com/tiancaiamao/go-internals/issues/28 原因是这本书,写的时候 Go 还在是 1.0/1.1 版本。现在新版本的语言规范里面把这个行为改掉了。 先别关这个 issue,我决定后面抽空把它 fix 一下。@shscy
interface着不多就是一个胖指针。它存了两个域: 一个域是指向对象数据的指针,另一个域是指向类型信息的结构体的指针。 类型信息结构体里面存放的东西就很多了,包含了方法表等等信息,不过没有继承之类的东西,因为go中没有c++那种继承的。 c++中的虚函数表指针,链出去只是函数相关的信息。而go的interface的这个指针出去是指向一个类型信息结构体,不仅仅是函数相关的信息,更加丰富。所以在反射方面做得很强大,当然,重量级一些,性能也就低一些。 近段时间忙啊,都没时间写,后面会写到interface的......plus,我是反面向对象主义者。即使写了也不叫go的对象模型,估计叫类型系统之类的 : -)
> 原作者现在还有兴趣完成这一部分吗。其他部分质量都很高,这一部分有内容缺失太可惜了。 2020 年我考虑一下
从哪里链接的呀?看起来是打错了地址,ebook -> zh https://github.com/tiancaiamao/go-internals/blob/master/zh/05.0.md
race dectect 的原理,是把所有的内存操作都记录下来。操作的内存位置,操作的时间,是读还是写....等等信息。 然后拿这些信息判断,是否读会读到一个未完成的写,或者是写会跟另外未完成的写相互冲突。 《深入解析go》都没有在更新。你想了解的这个点在博客里面倒是记了的。 http://www.zenlife.tk/race-dectect.md
I'm thinking of changing the shen-go implementation from bytecode VM to translating the code to Go directly. This feature helps a lot!
> you will still need the bytecode VM to support code evaluated at runtime, right? Yes. > is there a way to compile and dynamically load Go code at runtime?...