main
1package pool
2
3import (
4 "runtime"
5
6 "golang.org/x/sync/errgroup"
7)
8
9func Run[T any](items []T, fn func(T) error) error {
10 if len(items) == 0 {
11 return nil
12 }
13 g := &errgroup.Group{}
14 g.SetLimit(runtime.NumCPU())
15 for _, item := range items {
16 g.Go(func() error { return fn(item) })
17 }
18 return g.Wait()
19}