亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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

小云
80
2023-10-12 09:34:23
欄目: 編程語言

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 的并發控制。

0
和田市| 西畴县| 婺源县| 广安市| 平邑县| 洞口县| 独山县| 襄汾县| 梨树县| 鸡西市| 杨浦区| 长丰县| 伽师县| 德令哈市| 常宁市| 广南县| 鸡西市| 庆安县| 益阳市| 洱源县| 哈巴河县| 松溪县| 柘荣县| 枣阳市| 平阴县| 新巴尔虎左旗| 乐安县| 连江县| 河间市| 宕昌县| 新津县| 长丰县| 子洲县| 修武县| 灯塔市| 酒泉市| 汝城县| 天津市| 永定县| 定安县| 伊春市|