























sync.WaitGroup
如果一个任务可以分解成多个子任务,且各子任务之间没有依赖,那么就可以用sync.WaitGroup,并发处理每个子任务,等到全部子任务都执行完毕后,再进行下一步处理。
func main() {
var wg sync.WaitGroup
wg.Add(3)
go handlerTask1(&wg)
go handlerTask2(&wg)
go handlerTask3(&wg)
wg.Wait()
fmt.Println("全部任务执行完毕.")
}
func handlerTask1(wg *sync.WaitGroup) {
defer wg.Done()
fmt.Println("执行任务 1")
}
func handlerTask2(wg *sync.WaitGroup) {
defer wg.Done()
fmt.Println("执行任务 2")
}
func handlerTask3(wg *sync.WaitGroup) {
defer wg.Done()
fmt.Println("执行任务 3")
}
注意,handlerTask函数的入参必须是sync.WaitGroup指针类型,不能是sync.WaitGroup类型。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。