一个 goroutine 是由 Go 运行时管理的轻量级线程。
go f(x, y, z)
会启动一个新的 goroutine 来运行
f(x, y, z)
f、 x、 y 和 z 的求值发生在当前 goroutine 中,而 f 的执行发生在新的 goroutine 中。
f
x
y
z
Goroutines 运行在同一个地址空间中,因此对共享内存的访问必须进行同步。sync 包提供了实用的同步原语,不过在 Go 中你并不会经常用到它们,因为还有其他原语可用。(见下一页。)
sync