Wait group
主要是为了等待所有的协程都完成。使用方式如下所示
func job(index int) int {
time.Sleep(time.Millisecond * 500)
return index
}
func main() {
wg := sync.WaitGroup{}
// 也可以 var wg sync.WaitGroup 会自动初始化零值
for i := 0; i < 5; i++ {
wg.Add(1)
go func(index int) {
defer wg.Done() // 这别忘记了要减掉,不然wait会一直等待,导致死锁
fmt.Println(job(index))
}(i)
}
wg.Wait()
}