如何使用 Context 同步多個 Go 例程
為了同步多個 goroutine,允許它們在其中一個返回時終止,context提供了一個有效的
說明:
範例程式碼建立了兩個 goroutine。為了同步它們,將啟動 context.Context 並將其提供給兩個 goroutine。每個 goroutine 都會進入一個 select {} 循環,監聽來自上下文的訊息。
當發生錯誤或滿足特定條件時:
程式碼範例:
package main import ( "context" "sync" ) func main() { ctx, cancel := context.WithCancel(context.Background()) wg := sync.WaitGroup{} wg.Add(3) go func() { defer wg.Done() for { select { // msg from other goroutine finish case <-ctx.Done(): // end } } }() go func() { defer wg.Done() for { select { // msg from other goroutine finish case <-ctx.Done(): // end } } }() go func() { defer wg.Done() // your operation // call cancel when this goroutine ends cancel() }() wg.Wait() }
使用優點範例:
以上是如何使用上下文優雅地終止多個 Go 例程?的詳細內容。更多資訊請關注PHP中文網其他相關文章!