Выбор ответа Junior Паттерны конкурентности обновлено
Семафор на буферизованном канале
Вопрос
Как ограничить число одновременных горутин пятью без пула воркеров?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Буферизованный канал на 5: занять слот до запуска, освободить после. Канал ёмкостью 5 работает как счётчик слотов: шестая отправка заблокируется, пока одна из горутин не освободит слот.
Варианты ответа
runtime.GOMAXPROCS(5): больше пяти горутин не запуститсяsync.WaitGroupсAdd(5): шестая горутина будет ждать- Буферизованный канал на 5: занять слот до запуска, освободить послеправильный ответ
time.Sleepмежду запусками, чтобы горутины не накладывались
Разбор
Канал ёмкостью 5 работает как счётчик слотов: шестая отправка заблокируется, пока одна из горутин не освободит слот. GOMAXPROCS ограничивает параллельное выполнение Go-кода, но не число горутин, ждущих на сети. WaitGroup только ждёт. Sleep ничего не гарантирует.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.