久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Go WaitGroup的使用方式及實例詳解

216次閱讀
沒有評論

共計 1035 個字符,預計需要花費 3 分鐘才能閱讀完成。

WaitGroup 是 Go 語言的一個并發控制機制,它可以用于等待一組 goroutine 的結束。WaitGroup 提供了三個方法:Add、Done 和 Wait。

  1. Add 方法:用于設置 WaitGroup 中等待的 goroutine 的數量。Add 方法的參數是一個整數,表示需要等待的 goroutine 的數量。通常在啟動每個 goroutine 之前都會調用 Add 方法來增加要等待的 goroutine 的數量。
  2. Done 方法:用于通知 WaitGroup 一個 goroutine 的結束。在 goroutine 的最后調用 Done 方法來減少 WaitGroup 中等待的 goroutine 的數量。
  3. Wait 方法:用于阻塞當前 goroutine,直到 WaitGroup 中等待的 goroutine 的數量變為 0。一般在主 goroutine 里調用 Wait 方法,等待所有子 goroutine 結束后再繼續執行。

下面是一個使用 WaitGroup 的示例代碼:

package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
for i := 0; i < 5; i++ {wg.Add(1)
go func(i int) {defer wg.Done()
fmt.Printf("goroutine %d\n", i)
}(i)
}
wg.Wait()
fmt.Println("All goroutines finished")
}

在上面的例子中,首先創建了一個 WaitGroup 對象 wg。然后使用一個 for 循環啟動了 5 個 goroutine,并在每個 goroutine 中調用了 wg.Add(1) 來增加 WaitGroup 中等待的 goroutine 的數量。在每個 goroutine 的最后調用了 wg.Done() 來通知 WaitGroup 一個 goroutine 的結束。最后在主 goroutine 中調用了 wg.Wait() 來等待所有的子 goroutine 結束。
上面的代碼運行時,可能會輸出類似如下的結果:

goroutine 4
goroutine 0
goroutine 3
goroutine 2
goroutine 1
All goroutines finished

可以看到,不同的 goroutine 的輸出順序是隨機的,這是因為它們是并發執行的。
總結:WaitGroup 是 Go 語言中一個用于等待一組 goroutine 結束的機制。通過調用 Add、Done 和 Wait 方法,可以實現對一組 goroutine 的并發控制。

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-13發表,共計1035字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 开平市| 芜湖县| 西和县| 佛学| 合川市| 安塞县| 耿马| 合阳县| 剑河县| 濮阳县| 延边| 新蔡县| 康乐县| 桂平市| 江城| 榆社县| 博罗县| 玉门市| 盱眙县| 自治县| 兴海县| 大洼县| 通榆县| 信丰县| 郸城县| 漳浦县| 肥东县| 平舆县| 长春市| 木兰县| 邯郸市| 晋城| 奎屯市| 健康| 元谋县| 安吉县| 英超| 彭山县| 无为县| 枣强县| 韶关市|