Go Sync并发包之errgroup
errgroup
包在Go语言中用于简化错误处理,它可以用来等待一组goroutine完成任务,并且可以收集它们遇到的任何错误。
以下是一个使用errgroup
包的示例代码:
package main
import (
"fmt"
"golang.org/x/sync/errgroup"
"time"
)
func main() {
var g errgroup.Group
// 启动goroutine执行任务
g.Go(func() error {
time.Sleep(2 * time.Second)
fmt.Println("任务1完成")
return nil // 如果任务成功完成,返回nil
})
g.Go(func() error {
time.Sleep(1 * time.Second)
fmt.Println("任务2完成")
return nil // 如果任务成功完成,返回nil
})
// 等待所有goroutine完成
if err := g.Wait(); err != nil {
fmt.Println("任务出现错误:", err)
}
}
在这个例子中,我们启动了两个goroutine来执行任务,并且使用errgroup.Group
来等待它们完成。每个任务完成后,都会返回nil表示成功,如果任何一个goroutine返回了非nil的错误,g.Wait()
将会返回这个错误。这种方式简化了错误处理和goroutine的管理。
评论已关闭