Необходимо написать функцию для параллельного выполнения заданий в N параллельных горутинах:
- функция должна останавливать свою работу, если произошло M ошибок;
- после завершения работы функции (успешного или из-за превышения M) не должно оставаться работающих горутин;
- если задачи работают без ошибок, то выполняются все N задач;
- если в первых M задачах происходят ошибки, то всего выполнится не более N+M задач.
Нужно учесть, что задания могут выполняться разное время, а длина списка задач
len(tasks)
может быть больше или меньше N.
При необходимости можно выделять дополнительные функции / ошибки.
- Пайплайн зелёный - 4 балла
- Добавлены новые юнит-тесты - до 4 баллов
- Понятность и чистота кода - до 2 баллов
- https://en.wikipedia.org/wiki/Producer%E2%80%93consumer_problem
sync.WaitGroup
go test -v -race -count=100 .