sync
1、使用方法
| 方法 | 说明 |
|---|---|
| (wg * WaitGroup) Add(delta int) | 计数器+delta |
| (wg *WaitGroup) Done() | 计数器-1 |
| (wg *WaitGroup) Wait() | 阻塞直到计数器变为0 |
2、使用实例
代码:
package mainimport ("fmt""sync"
)var wg sync.WaitGroupfunc echoHello() {defer wg.Done() //减少计数器fmt.Println("hello world!")
}
func main() {n := 4 wg.Add(n) //设置计数器for i := 1; i <= n; i++ {go echoHello() // 启动另外一个goroutine去执行echoHello函数}wg.Wait() //等待计数器为0 (任务完成时)fmt.Println("main goroutine done!")}
结果:
hello world!
hello world!
hello world!
hello world!
main goroutine done!
sync.WaitGroupnnDone()1Wait()0