Golang 内存模型
1 指令顺序调整 对于单goroutine程序代码,编译器和处理器有时会调整源码中的指令顺序来做一些优化。当然,此类调整在当前gorouine程序来看并不会改变其源码指令所指定的行为。但在多个线程共享内存的情形下,某个goroutine内部的指令顺序调整可能会影响到依赖其指令顺序的其他goroutine的行为。 看一段代码: package main import "fmt" var s string var done bool func setup() { s = "hello world" done = true if done { fmt.
阅读更多