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