Go 中如何一次終止多個Goroutine
在Go 中,你可能會遇到需要同時終止多個Goroutine 的場景。當一個 goroutine 的完成應該觸發其他 goroutine 的終止時,這尤其有用。
考慮以下程式碼片段:
在這種情況下,您要確保當其中一個 goroutine 完成時返回時,對方也應該退出。實現這一點的常見方法是使用通道進行訊號。然而,這可能會導致寫入關閉通道恐慌。
解決此問題的可靠方法是利用 Go 的上下文機制。上下文可讓您在例程之間建立通信,並在操作完成或取消時發出信號。下面是一個範例:
在這個範例中,我們建立一個可以傳遞給 goroutine 來檢查終止訊號的上下文。當第三個 goroutine 完成其操作時,它會呼叫 cancel(),這會向等待其完成的兩個 goroutine 發送訊號。結果,所有 goroutine 都會正常終止。
以上是在 Go 中如何優雅地同時殺死多個 Goroutine?的詳細內容。更多資訊請關注PHP中文網其他相關文章!