Семафор ограничивает число одновременных участников. В Go простой вариант — буферизированный канал, а для взвешенных разрешений есть golang.org/x/sync/semaphore.
Семафор — что это такое и где его взять в Go?
Семафор ограничивает число одновременных участников. В Go простой вариант — буферизированный канал, а для взвешенных разрешений есть golang.org/x/sync/semaphore.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Семафор ограничивает число одновременных участников. В Go простой вариант — буферизированный канал, а для взвешенных разрешений есть golang.org/x/sync/semaphore.
При канальном варианте отправка занимает слот, получение освобождает. Освобождение выполняют ровно один раз, обычно через defer после успешного захвата. Ожидание должно учитывать context; размер ноль для такой схемы не создаёт полезного лимитера и может заблокировать работу.