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的步骤如下:
- 创建一个sync.WaitGroup变量;
- 调用Add方法来设置WaitGroup需要等待的goroutine数量;
- 启动需要等待的goroutine;
- 调用Wait方法来等待所有的goroutine执行结束;
- 调用Done方法来通知WaitGroup一个goroutine已经结束;
- 最后调用Wait方法来等待所有的goroutine结束。