Golang如何使用 sync.WaitGroup 进行 Goroutine 的计数器同步?

使用 sync.WaitGroup 可以实现 Goroutine 的计数器同步。具体实现步骤如下:

  • 1、创建一个 WaitGroup 对象 wg。
  • 2、在每个需要等待的 Goroutine 中,使用 wg.Add(1) 将计数器加一。
  • 3、在每个 Goroutine 的末尾,使用 wg.Done() 将计数器减一。
  • 4、在需要等待所有 Goroutine 执行完成的位置,使用 wg.Wait() 阻塞等待计数器归零。

示例代码如下:

package main

import (
    "fmt"
    "sync"
)

func main() {
    var wg sync.WaitGroup
    for i := 0; i < 10; i++ {
        wg.Add(1)
        go func(i int) {
            fmt.Printf("Goroutine %d is running...\n", i)
            wg.Done()
        }(i)
    }
    wg.Wait()
    fmt.Println("All Goroutines finished!")
}

在上面的示例中,使用了 sync.WaitGroup 对象 wg 来进行计数器同步,使用 wg.Add(1) 将计数器加一,使用 wg.Done() 将计数器减一。在 main 函数中使用 wg.Wait() 阻塞等待所有 Goroutine 执行完成。