Nel tutorial GO, abbiamo questa diapositiva:Perché è necessario time.sleep per eseguire determinate 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")
}
risultati esecuzione di questo codice produce previsto ("mondo" e "ciao" scritto sullo schermo intercambiabile 5 volte).
Tuttavia, se commentare time.Sleep
(e, di conseguenza, la linea "time"
del importazione) ed eseguire il programma ancora una volta, ci ritroviamo con solo "ciao" visualizzate sullo schermo per cinque volte.
Che cosa è così importante su time.Sleep
che salva la goroutine dalla morte?
Il risultato che ottengo con 'runtime.Gosched()' è leggermente diverso. Prendo 5: ciao e 4: mondo. Mentre con 'time.Sleep()' ottengo 5 di ciascuno. – Akavall