go-zero/core/fx/parallel.go

33 lines
568 B
Go
Raw Normal View History

2020-07-26 17:09:05 +08:00
package fx
2024-04-29 00:18:30 +08:00
import (
"github.com/zeromicro/go-zero/core/errorx"
"github.com/zeromicro/go-zero/core/threading"
)
2020-07-26 17:09:05 +08:00
2021-02-19 17:49:39 +08:00
// Parallel runs fns parallelly and waits for done.
2020-07-26 17:09:05 +08:00
func Parallel(fns ...func()) {
group := threading.NewRoutineGroup()
for _, fn := range fns {
group.RunSafe(fn)
}
group.Wait()
}
2024-04-29 00:18:30 +08:00
func ParallelErr(fns ...func() error) error {
var be errorx.BatchError
group := threading.NewRoutineGroup()
for _, fn := range fns {
f := fn
group.RunSafe(func() {
if err := f(); err != nil {
be.Add(err)
}
})
}
group.Wait()
return be.Err()
}