环境
go version go1.10.1 darwin/amd64
Goroutines
一个 ```goroutine``` 由 Go 运行时管理的轻量级线程.
go f(x, y, z)
启动一个新的goroutine并运行
f(x, y, z)
f,x,y和z的求值发生在当前的goroutine中,f的执行发生在新的goroutine中。
package main
import (
"fmt"
"time"
)
func say(s string) {
for i := 0; i < 5; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Println(s)
}
}
func main() {
go say("world")
say("hello")
}
运行结果如下
world
hello
world
hello
world
hello
world
hello
world
hello
Goroutines在相同的地址空间中运行,因此在访问共享的内存时必须进行同步。sync 包提供了这种能力,不过在 Go 中并不经常用到,因为还有其它的办法。
版权声明
由 durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 博客( https://www.xiaorongmao.com ),版权所有,侵权必究。