go基础第六篇:sync包

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类型。

posted on 2026-05-06 14:31  koushr  阅读(7)  评论(0)    收藏  举报

导航