package main
import (
"fmt"
"time"
"strconv"
"net/http"
"io/ioutil"
)
var (
maxRoutineNum = 5
)
func main() {
ch := make(chan int, maxRoutineNum)
for i := 1; i < 2000000; i++ {
ch <- 1
go func(i int) {
run(i)
defer func() { <-ch }()
}(i)
fmt.Println("+")
}
//确保执行完后主线程再退出
for i := 0; i < 10; i++ {
ch <- 1
}
}
func run(s int){
str := strconv.Itoa(s)
fmt.Println("*"+str+"*")
HttpGet("https://xg623.oss-cn-hongkong.aliyuncs.com/623.apk",str)
//time.Sleep(1*time.Second)
time.Sleep(1*time.Microsecond)
}
func HttpGet(url string,s string) (string,error){
resp, err := http.Get(url+"?rnd="+s)
if err != nil {
fmt.Println(err)
return "",err
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
return "",err
}
err = ioutil.WriteFile("E:\\GoPro\\src\\test\\down\\"+s, body, 0777)
if err != nil {
fmt.Println(err)
return "",err
}
return string(body),nil
}