Вопрос: Как реализовать ограничение параллелизма (semaphore) на канале?

Go Junior Без компании
Вопрос: Как реализовать ограничение параллелизма (semaphore) на канале?
Ответы
```go sem := make(chan struct{}, 3) work := func() { sem <- struct{}{} // acquire defer func() { <-sem }() // release // ... } for i := 0; i < 10; i++ { go work() } ``` **Как это работает:** буфер канала — число "разрешений". Когда буфер заполнен, новые acquire блокируются.