Concurrent Requests")
                  
                  
                  // ...
                  
                  
                  
                  
                  
                    concurrentGoroutines := make(chan bool, concurrency)
                  
                  
                    var wg sync.WaitGroup
                  
                  
                  
                  
                  
                    for _, url := range urls {
                  
                  
                      wg.Add(1)
                  
                  
                      go func(url string) {
                  
                  
                        defer wg.Done()
                  
                  
                        concurrentGoroutines <- true
                  
                  
                        MakeRequest(url)
                  
                  
                        <-concurrentGoroutines
                  
                  
                      }(url)
                  
                  
                    }
                  
                  
                  
                  
                  
                    wg.Wait()
                  
                  
                  
                  
                  
                  правильно количество одновременно обрабатываемых запрпосов ограничиваю?
                  
                  
                
Нет :) у вас будет просто канал с 50 сообщениями максимум в буфере, количество горутин это не ограничит
во-первых зачем chan bool если можно chan struct{}?
во-вторых похоже что нет, неправильно
https://play.golang.org/p/m5Bl3xq-TF_4 создаём pool горутин и канал, в которую горутина диспетчер пишет работу горутины из пула читают канал работы пока он не закроется таким образом мы не создаём горутины для каждой единицы работы, что хорошо
Обсуждают сегодня