# Домашнее задание по модулю "Многопоточное программирование" ## Основное задание Уменьшить время ответа cart.list. - Распараллельные вызовы ручки http://route256.pavl.uk:8080/docs/#/ProductService/ProductService_GetProduct продакт сервиса - Самим написать аналог https://pkg.go.dev/golang.org/x/sync/errgroup и использовать его - В случае ошибки - отменять все текущие запросы и вернуть ошибку из errgroup - При общении с Product Service необходимо использовать лимит 10 RPS на клиентской стороне - Группа живет в рамках одного запроса = группа не переиспользуется между запросами - in-memory репозитории защитить мьютексами ## Дополнительное задание - Тесты на многопоточность in-memory репозитория - Грейсфул завершение приложения (использовать signal.Notify) - Контроль утечек (горутин через https://github.com/uber-go/goleak) - Контроль рейзов (через тесты с флагом -race) - Реализовать параллельный запуск тестов ## Автоматические проверки Ваше решение должно проходить автоматические проверки: - Компиляция - Линтер - Unit-тесты - Code coverage >40% - Автотесты Прохождение автоматических проверок влияет на итоговую оценку за домашнюю работу. ### Дедлайны сдачи и проверки задания: - 28 июня 23:59 (сдача) / 1 июля, 23:59 (проверка)