首頁  >  文章  >  後端開發  >  如何在 Go 中為 WaitGroup.Wait() 新增超時?

如何在 Go 中為 WaitGroup.Wait() 新增超時?

Susan Sarandon
Susan Sarandon原創
2024-11-21 06:03:09735瀏覽

How to Add a Timeout to WaitGroup.Wait() in Go?

厭倦了永遠的等待?在 WaitGroup.Wait() 中加入超時

當您使用 WaitGroup.Wait() 來同步 Goroutines 並確保它們完成執行時,您有時可能希望能夠在特定持續時間後終止等待。這可以防止您的系統無休止地依賴可能永遠無法完成任務的錯誤工作人員。

定時等待群組的實用解決方案

實現超時的一種方法是利用goroutine、通道和時間包的組合。這個想法是創建一個通道,在所有 goroutine 完成後接收訊號。同時,定時器被初始化為所需的超時持續時間。 select 語句用於監視通道和計時器:

使用輔助函數簡化逾時

為了提供更方便和可重複使用的方法,考慮建立一個封裝此功能的輔助函數:

此輔助函數接受WaitGroup 並所需的逾時持續時間,並返回等待是否超過指定限制。

輔助函數的使用

使用輔助函數非常簡單:

在這個例子中,如果等待組完成時間超過5 秒,waitTimeout 函數將傳回true,表示逾時已經發生了。

以上是如何在 Go 中為 WaitGroup.Wait() 新增超時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn