在go里面执行N次并发请求是非常简单的,比如并发执行100次请求,就启100个协程就好了
func main() {
i := 0
wg := &sync.WaitGroup{}
for i < 10 {
wg.Add(1) // 放在循环里面,就+1,放在循环外面,要执行多少次计算就加几,比如在for外面:wg.Add(10)是一样的效果
url := "https://www.baidu.com"
go func(url string) {
resp, _ := http.Get(url)
defer resp.Body.Close()
data, _ := ioutil.ReadAll(resp.Body)
wg.Done() // 执行完就减一次计数器
}(url)
i++
}
wg.Wait() // 阻塞住,等待所有协程执行完毕时释放
fmt.Println("end")
}
PS:Add有多少次计数,Done就要执行多少次,否则Wait会一直等待!!