работало максимум 10 для одной задачи.
Сейчас у меня вот такая конструкция:
goroutines := make(chan struct{}, 10)
for _, path := range routes {
goroutines <- struct{}{}
go func(path) {
wg.Add(1)
// ...
<-goroutines
wg.Done()
}(path)
}
Т.е. если буферивизованный канал полностью забит, то работает 10 горутин, как только горутина завершает работу она читает из канала и освобождает место в нем
Так это самый простой и самый действенный вариант.
Обсуждают сегодня