幸运快三网站搭建q<115.28.8.00.9.9>
package main
import (
"fmt"
)
func main() {
for i := 0; i < 10; i++ {
go func() {
fmt.Println(i)
}()
}
}
当程序执行到一条 go 语句时,Go 语言运行时系统会试图从某个存放空闲的 goroutine 的队列中获取一个 goroutine,找不到时才会创建一个 goroutine。
然后 Go 语言运行时系统用该 goroutine 包装当前的 go 函数,再将该 goroutine 追加到存放某个可运行的 goroutine 队列中。
因此,go 函数的执行时间总是会滞后于所属的 go 语句的执行时间。
而 for 语句会以很快的速度执行完毕,但那 10 个包装了 go 函数的 gorouting 往往还没获得运行的机会。
一旦主 goroutine 中的代码执行完毕,当前的 Go 程序就会结束运行。
有疑问加站长微信联系(非本文作者)