在Golang中,WaitGroup是一个并发原语,可以用于等待一组goroutine完成任务。下面是一些使用WaitGroup的技巧,以实现高效并发编程。
var wg sync.WaitGroup
wg.Add(2) // 设置需要等待的goroutine数量
go func() {
defer wg.Done() // 任务完成后通知WaitGroup
// 执行任务逻辑
}()
go func() {
defer wg.Done() // 任务完成后通知WaitGroup
// 执行任务逻辑
}()
wg.Wait() // 等待所有goroutine完成任务
通过使用WaitGroup,可以确保所有的goroutine都完成了任务,然后再继续执行下面的逻辑。
另外,还有一些注意事项需要注意:
在启动goroutine之前调用Add方法,否则可能会导致死锁。
在goroutine内部使用defer语句调用Done方法,以确保任务完成后一定会调用Done方法。
不要在多个goroutine之间共享WaitGroup变量,应该将WaitGroup作为参数传递给每个goroutine。
总的来说,使用WaitGroup可以很方便地等待一组goroutine完成任务,从而实现高效的并发编程。