Windows 上的Goroutine 執行:靜默故障故障排除
涉及Goroutine 的簡單測試在Windows 上顯示出意外的行為,因為未未見產生預期的輸出。出現問題的原因是 main 函數在終止之前沒有等待 goroutine 完成。
Go Awaits
當使用「go」關鍵字啟動 goroutine 時,它與 main 函數同時執行。但是,main 函數的執行不會暫停並等待呼叫的 goroutine 完成。因此,main 函數退出,可能導致 goroutine 無法調度。
補救措施
為了確保 goroutine 有機會執行並列印其輸出,main必須修改函數等待一段時間。這可以使用“time”套件和“Sleep”函數來實現。透過引入睡眠時間,main 函數讓 goroutine 有機會在終止之前運行並產生輸出。
修改後的程式碼
以下修改後的程式碼透過以下方式解決了該問題在主函數末尾添加10 秒睡眠時間:
<code class="go">package main import ( "fmt" "time" ) func test() { fmt.Println("test") } func main() { go test() time.Sleep(10 * time.Second) }</code>
輸出
修改後的程式碼現在會產生預期的輸出:
test
此修改允許main 函數在啟動goroutine 後等待,以便在程式終止之前有足夠的時間執行並列印“test”訊息。
以上是為什麼我的 Goroutine 輸出在 Windows 上消失?的詳細內容。更多資訊請關注PHP中文網其他相關文章!