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