INNER CODE UNIT · Go

parallelize

Clever/microplane · cmd/helpers.go:32

func parallelize(repos []lib.Repo, f func(lib.Repo, context.Context) error) error {
	return parallelizeLimited(repos, f, 10)
}

// parallelize take a list of repos and applies a function (clone, plan, ...) to them
func parallelizeLimited(repos []lib.Repo, f func(lib.Repo, context.Context) error, parallelismLimit int64) error {
	ctx := context.Background()
	var eg errgroup.Group
	parallelLimit := semaphore.NewWeighted(parallelismLimit)
	for _, r := range repos {
		eg.Add(1)
		go func(repo lib.Repo) {
			parallelLimit.Acquire(ctx, 1)
			defer parallelLimit.Release(1)
			defer eg.Done()

			err := f(repo, ctx)
			if err != nil {

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…