Карточка Middle Паттерны конкурентности обновлено
errgroup.SetLimit и TryGo
Вопрос
Что делают g.SetLimit(n) и g.TryGo(f) у errgroup?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
SetLimit(n) ограничивает число одновременно работающих задач: Go блокируется, пока активных n. TryGo запускает задачу только если есть свободный слот и возвращает false вместо блокировки.
Ответ
SetLimit(n) ограничивает число одновременно работающих задач: Go блокируется, пока активных n. TryGo запускает задачу только если есть свободный слот и возвращает false вместо блокировки.
Разбор
SetLimit заменяет ручной семафор. Отрицательное значение снимает ограничение.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Паттерны конкурентности»
- Backpressure и ограничение нагрузки в Go-сервисе
- Закрытие выходного канала в fan-in
- Паттерн generator
- Порядок graceful shutdown
- Graceful shutdown Go-сервиса по шагам
- Остановка pipeline при раннем выходе
- Зачем нужен worker pool
- Ограничение частоты запросов