package main
import (
"context"
"errors"
"fmt"
"runtime"
"time"
"golang.org/x/sync/errgroup"
)
func main() {
group()
for {
fmt.Println(runtime.NumGoroutine())
time.Sleep(time.Second)
}
}
func group() {
var eg errgroup.Group
eg.Go(func() error {
fmt.Println("111111")
return errors.New("err1")
})
eg.Go(func() error {
time.Sleep(time.Second)
fmt.Println("nil")
return nil
})
eg.Go(func() error {
fmt.Println("3333")
return errors.New("err3")
})
go func() {
egErr := eg.Wait() // 会等待所有的rg.Go执行完,并返回第一个执行的错误
if egErr != nil {
fmt.Println("egerr", egErr)
}
}()
fmt.Println("nnnnn")
}
go包 golang.org/x/sync/errgroup
最新推荐文章于 2024-01-31 23:34:05 发布