Необходимо реализовать функцию:
func Execute(ctx context.Context, workers int, tasks []Task) ([]Result, error)где
type Result any
type Task func(context.Context) (Result, error)Функция должна:
- выполнять задачи конкурентно;
- одновременно выполнять не более
workersзадач; - возвращать результаты в том же порядке, что и входной список задач;
- если любая задача завершилась с ошибкой:
- отменить выполнение остальных задач;
- вернуть первую полученную ошибку;
- корректно завершать все goroutine;
- не содержать race condition.