You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

sync2.go 334 B

1 year ago
1234567891011121314151617181920
  1. package sync2
  2. import "sync"
  3. func ParallelDo[T any](args []T, fn func(val T, index int) error) error {
  4. var err error
  5. var wg sync.WaitGroup
  6. wg.Add(len(args))
  7. for i, arg := range args {
  8. go func(arg T, index int) {
  9. defer wg.Done()
  10. if e := fn(arg, index); e != nil {
  11. err = e
  12. }
  13. }(arg, i)
  14. }
  15. wg.Wait()
  16. return err
  17. }