Goroutine 和 time.Sleep()
使用 Goroutines 時,經常會遇到 time.Sleep( )。本文深入探討了 goroutine 執行中 time.Sleep() 的重要性,探討了省略它的後果。
理解 Goroutine
Goroutines 是輕量級的執行線程去。與線程不同,goroutines 由 Go 運行時管理,並與程式中的其他 goroutine 共享記憶體。
time.Sleep() 的作用
在提供的範例中,say() 函數是一個 goroutine,負責將「world」印到螢幕上。 time.Sleep() 語句人為地將 goroutine 的執行延遲每次迭代 100 毫秒。
沒有 time.Sleep()
如果 time.Sleep() 語句被刪除後, say("world") goroutine 永遠不會有機會運作。這是因為 Go goroutine 調度程式是非搶佔式的。 Goroutine 自願讓出控制權,允許其他 Goroutine 執行。
主 Goroutine
本例中的 main() 函數是主 Goroutine。當 time.Sleep() 被刪除時,主 goroutine 會執行 say("hello") 5 次,而不會放棄控制權。結果,say("world") goroutine 永遠不會運行,只有“hello”被打印到屏幕上。
維持程序執行
In如果沒有 time.Sleep(),主 Goroutine 就會完成執行並且程序退出。這是因為沒有其他 goroutine 運行來保持程式存活。相反,當使用 time.Sleep() 時,say("world") goroutine 會交出控制權,允許主 goroutine 執行,程式繼續運作。
以上是為什麼 `time.Sleep()` 對於 Goroutine 的正確執行至關重要?的詳細內容。更多資訊請關注PHP中文網其他相關文章!