如何優雅地等待 Go 例程完成
使用 Go 進行開發時,確保例程在退出程序之前完成至關重要。利用布林通道(如提供的 Playground 連結中所示)可以有效地實現此目的。
理解通道操作
阻塞操作
處理死鎖場景
取消註解最後一行,
替代方法
而布林通道方法是一個簡單的解決方案,sync 套件提供了用於協調並發操作的附加選項。考慮以下程式碼:
package main import ( "fmt" "sync" "time" ) func main() { var wg sync.WaitGroup for i := 0; i < 10; i++ { wg.Add(1) go func() { longOp() wg.Done() }() } // Waits until all routines complete (wg.Done called 10 times) wg.Wait() } func longOp() { time.Sleep(time.Second * 2) fmt.Println("Long operation completed") }
在這種情況下,sync.WaitGroup 用於追蹤和同步並發例程,確保 main() 等待所有例程完成後再繼續執行。
以上是如何優雅地等待 Go 例程完成:布林通道 vs.sync.WaitGroup?的詳細內容。更多資訊請關注PHP中文網其他相關文章!