INNER CODE UNIT · Go

parallelizeLimited

Clever/microplane · cmd/helpers.go:37

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 {
				eg.Error(err)
				return
			}
		}(r)
	}

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…