Was genau hat Laufzeit.Gosched tun?

In eine version vor der Version von go 1.5-Tour Gehen websitees ist ein Stück code, das so aussieht.

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")
}

Die Ausgabe sieht wie folgt aus:

hello
world
hello
world
hello
world
hello
world
hello

Was mich stört, ist, dass, wenn runtime.Gosched() entfernt wird, wird das Programm nicht mehr gibt "Welt".

hello
hello
hello
hello
hello

Warum ist das so? Wie funktioniert runtime.Gosched() auf die Ausführung?

InformationsquelleAutor der Frage Jason Yeo | 2012-10-28

Schreibe einen Kommentar