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 горутин и канал, в которую горутина диспетчер пишет работу горутины из пула читают канал работы пока он не закроется таким образом мы не создаём горутины для каждой единицы работы, что хорошо
Обсуждают сегодня