W tutorialu GO, mamy ten slajd:Dlaczego wymagany jest time.sleep do uruchomienia niektórych goroutines?
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")
}
Uruchomienie tego kodu produkuje Oczekiwane rezultaty ("świat" i "Hello" napisane na ekranie zamiennie 5 razy).
Jeśli jednak wykomentuj time.Sleep
(a co za tym idzie, linia "time"
importu) i uruchomić program ponownie, jesteśmy w lewo z tylko „Hello” napisane na ekranie pięć razy.
Co jest tak ważnego w przypadku time.Sleep
, które oszczędza goryntynę przed śmiercią?
Rezultat, jaki uzyskuję z 'runtime.Gosched()' jest nieco inny. Otrzymuję 5: cześć i 4: świat. Podczas gdy z 'time.Sleep()' otrzymuję po 5 każdego. – Akavall