Golang sync.WaitGroup 代码示范

12 min read
package main

import (
 "fmt"
 "sync"
)

func main() {
 var wg sync.WaitGroup

 wg.Add(2) // 设置要等待的goroutine数量

 go func() {
  fmt.Println("goroutine1")
  wg.Done() // 当goroutine1完成时,调用Done()函数
 }()

 go func() {
  fmt.Println("goroutine2")
  wg.Done() // 当goroutine2完成时,调用Done()函数
 }()

 wg.Wait() // 等待goroutine完成
 fmt.Println("main goroutine")
}

sync.WaitGroup是Go语言中的一个重要的并发控制结构,它可以帮助我们管理多个goroutine之间的同步。

使用sync.WaitGroup的步骤如下:

  1. 创建一个sync.WaitGroup变量;
  2. 调用Add方法来设置WaitGroup需要等待的goroutine数量;
  3. 启动需要等待的goroutine;
  4. 调用Wait方法来等待所有的goroutine执行结束;
  5. 调用Done方法来通知WaitGroup一个goroutine已经结束;
  6. 最后调用Wait方法来等待所有的goroutine结束。