Карточка 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 ошибок.