package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
// Задаем максимальный размер канала
sem := make(chan bool, 100)
for i := 1; i <= 1000; i++ {
sem <- true
go func(id int) {
resp, err := http.Get(fmt.Sprintf("http://localhost:5000/request-%d", id))
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bytes)
<-sem
}(i)
}
// Вот этот. Все зависает пока канал не будет заполнен?
for i := 0; i < cap(sem); i++ {
sem <- true
}
}
Решил вернуться к изучению go после трех недель перерыва. Общий стаж «изучения» дней пять.