2019-03-24 20:27:28 +00:00
|
|
|
package repository
|
|
|
|
|
|
|
|
import (
|
|
|
|
"golang.org/x/sync/errgroup"
|
|
|
|
)
|
|
|
|
|
|
|
|
// RunWorkers runs count instances of workerFunc using an errgroup.Group.
|
2020-10-14 12:23:06 +00:00
|
|
|
// If an error occurs in one of the workers, it is returned.
|
|
|
|
func RunWorkers(count int, workerFunc func() error) error {
|
2020-03-08 19:48:51 +00:00
|
|
|
var wg errgroup.Group
|
2019-03-24 20:27:28 +00:00
|
|
|
|
|
|
|
// run workers
|
|
|
|
for i := 0; i < count; i++ {
|
|
|
|
wg.Go(workerFunc)
|
|
|
|
}
|
|
|
|
|
2020-10-14 12:23:06 +00:00
|
|
|
return wg.Wait()
|
2019-03-24 20:27:28 +00:00
|
|
|
}
|