首頁  >  文章  >  後端開發  >  為什麼我的 Goroutine 輸出在 Windows 上消失?

為什麼我的 Goroutine 輸出在 Windows 上消失?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-03 02:08:29775瀏覽

Why Does My Goroutine Output Disappear on Windows?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn