Вопрос: Как реализовать ограничение параллелизма (semaphore) на канале?
Python
Senior
Без компании
Вопрос: Как реализовать ограничение параллелизма (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 блокируются.