首頁  >  文章  >  後端開發  >  為什麼我的 Goroutine 在 Windows 上不執行?

為什麼我的 Goroutine 在 Windows 上不執行?

Patricia Arquette
Patricia Arquette原創
2024-10-30 04:48:02349瀏覽

Why Are My Goroutines Not Executing on Windows?

在Windows 上診斷非執行Goroutine

為了深入研究Goroutine 的複雜性,進行了一個簡化的測試來觀察它們的情況行為。然而,「測試」的預期結果從未實現。儘管包含了 for {} 循環來為 goroutine 提供充足的時間,但程式仍然保持沉默,沒有留下任何錯誤或成功的痕跡。

揭開問題

經過仔細檢查,很明顯問題的癥結在於 goroutine 的非同步性質。與以阻塞方式順序執行的傳統執行緒不同,goroutine 被設計為並發運行,不會阻礙主程式的執行。因此,程式執行不會暫停以適應呼叫函數的完成。

解決難題

為了糾正這種情況並允許正確觀察 goroutine 的輸出,需要一個時間可以引入.Sleep()語句。該語句將 main 函數的執行暫停指定的持續時間,為 goroutine 完成其工作提供足夠的時間。透過將持續時間設為非零值,例如 10 秒,goroutine 有足夠的機會在主函數終止之前執行和列印其輸出。

改進的測試案例

修改後的測試案例合併了time.Sleep() 語句,如下所示:

<code class="go">package main

import (
    "fmt"
    "time"
)

func test() {
    fmt.Println("test")
}

func main() {
    go test()
    time.Sleep(10 * time.Second)
}</code>

通過此修改,程式現在成功執行test() goroutine 並將「test」印到安慰。這種方法確保 main 函數在終止之前等待 goroutine 完成,可以對其行為進行可見觀察。

以上是為什麼我的 Goroutine 在 Windows 上不執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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