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}