Отмена задач по первой ошибке через context
Условие
Выполните n задач параллельно (не больше 8 одновременно). Задача ok v успешна и возвращает v (перед этим проверьте, не отменён ли контекст). Задача fail msg возвращает ошибку с текстом msg. При первой ошибке отмените общий контекст, чтобы ещё не начатые задачи не запускались.
Задача fail возвращает ошибку сразу, даже если контекст уже отменён. Задачи ok, до которых дошла очередь после отмены, не выполняются.
Вывод: если среди задач нет fail, выведите sum S, где S сумма результатов. Иначе выведите error: msg задачи fail с наименьшим номером (так результат не зависит от расписания горутин).
Ввод: n (1 ≤ n ≤ 5000), затем n строк.
Решение должно быть конкурентным (горутины), а вывод не должен зависеть от порядка их выполнения.
Пример
4
ok 5
ok 7
fail disk
ok 1
error: disk
Как подойти
WithCancelCause, пул воркеров по каналу индексов, ошибки в слайс по индексу, проверка ctx.Err перед задачей.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.