為什麼我的 Goroutine 沒有運行?
在 Go 程式設計領域,goroutine 提供了強大的並發執行機制。然而,有時這些 goroutine 可能看起來沒有回應,讓開發人員陷入困惑。
場景:
考慮以下Go 程式碼,它嘗試建立一個goroutine 並發送透過通道傳送訊息:
<code class="go">package main import "fmt" func main(){ messages := make(chan string,3) messages <p>執行此程式碼時,輸出可能會令人驚訝:</p> <pre class="brush:php;toolbar:false">Done!
問題:
儘管創建一個goroutine 時,程式碼永遠不會執行其中的語句。原因在於主程式的終止。在 Go 中,goroutines 獨立於 main 函數運行。一旦主程式退出,所有正在運行的 goroutine 都會被終止,即使它們還沒有機會執行。
解決方案:
為了防止為了防止 goroutine 過早終止,主程式必須保持活動狀態,直到 goroutine 完成其工作。有幾種方法可以實現這一點:
推薦:
為了更全面地了解goroutine 的行為和並發性Go,強烈建議閱讀Golang 博客上的優秀博文:《Go 中的並發》
以上是為什麼我的 Goroutine 在執行前就終止?的詳細內容。更多資訊請關注PHP中文網其他相關文章!