在 一个版本之前发布的围棋1.5的环游网站中,有一段代码是这样的。
package main
import (
"fmt"
"runtime"
)
func say(s string) {
for i := 0; i < 5; i++ {
runtime.Gosched()
fmt.Println(s)
}
}
func main() {
go say("world")
say("hello")
}
输出如下:
hello
world
hello
world
hello
world
hello
world
hello
困扰我的是,当 runtime.Gosched()
被删除时,程序不再打印“ world”。
hello
hello
hello
hello
hello
为什么会这样? runtime.Gosched()
如何影响执行?