理解 Goroutine 執行:為什麼我的 Goroutine 保持空閒
在你的 Go 程式碼中,你試圖嘗試 Goroutine 和通道。目標是創建一個連續從通道讀取資料的 goroutine,但預期的「進入 goroutine...」訊息從未出現。本文探討了這種行為背後的原因。
您提供的程式碼包含一個如下建立的goroutine:
go func(m *chan string) { fmt.Println("Entering the goroutine...") for { fmt.Println(<- *m) } }(&messages)
雖然goroutine 已啟動,但它很快就會終止,因為主程式立即結束列印「完成!」後。 Goroutines 與主程式同時執行;
為了防止 goroutine 過早終止,你需要找到一種方法,讓 goroutine 在執行時保持主程式運作。這可以透過使用等待特定數量訊息的單獨通道、使用sync.WaitGroup或實現其他技術來實現。
Go 部落格提供了有關並發的詳細指南 (https://blog .golang.org/go-proverbs)提供了有關 Go 中並發如何工作的寶貴見解。
以上是為什麼主程式退出後我的 Goroutine 仍處於空閒狀態?的詳細內容。更多資訊請關注PHP中文網其他相關文章!