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()
|
|
|
|
}
|