在GO教程中,我們有這個幻燈片:爲什麼運行某些goroutines需要time.sleep?
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")
}
運行這段代碼產生預期的結果(「世界」和「你好」寫到屏幕上交替5次)。
但是,如果我們註釋掉time.Sleep
(因此,在"time"
線進口的),然後運行程序再次,我們剩下的只有「你好」寫於屏幕的五倍。
關於time.Sleep
這麼重要的事情,可以節省goroutine的死亡時間嗎?
結果我得到'runtime.Gosched()'略有不同。我得到5:你好,4:世界。 while'time.Sleep()'我得到每個5。 – Akavall