В перед выпуском версии 1.5 веб-сайта Tour of Go появится фрагмент кода, который выглядит следующим образом.
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()
удаляется, программа больше не печатает "мир".
hello
hello
hello
hello
hello
Почему это так? Как runtime.Gosched()
влияет на выполнение?