在Golang中,WaitGroup是用来管理并发任务的一个非常有用的工具。它可以用来等待一组并发任务完成之后再继续执行后续的代码。
下面是一些使用WaitGroup的实践技巧,可以帮助你编写高效的并发程序:
var wg sync.WaitGroup
wg.Add(1) // 添加一个任务到WaitGroup
go func() {
// 并发任务的代码逻辑
wg.Done() // 任务完成后调用Done方法
}()
wg.Wait() // 等待所有任务完成
go func() {
// 并发任务的代码逻辑
wg.Done() // 任务完成后调用Done方法
}()
go func() {
time.Sleep(5 * time.Second) // 设置一个定时器,等待5秒钟
wg.Done() // 超时后调用Done方法
}()
wg.Wait() // 等待所有任务完成
var (
mu sync.Mutex
count int
errs []error
)
wg.Add(1)
go func() {
defer wg.Done()
// 并发任务的代码逻辑
err := doSomething()
if err != nil {
mu.Lock()
errs = append(errs, err)
mu.Unlock()
}
}()
wg.Wait()
// 检查是否有错误发生
if len(errs) > 0 {
// 处理错误
}
这些是一些使用Golang WaitGroup的实践技巧,可以帮助你编写高效的并发程序。希望对你有所帮助!