关于channel控制并发的问题

我的函数大致是这样的

func fetchUrl(id string, url string, c chan bool) {
    c <- true
    resp, err := http.Get(url)
    if err != nil {
        <-c
        fetchUrl(id, url, c)
    } else {
        defer resp.Body.Close()
        fmt.Println(time.Now())
        <-c
    }
}

main中是for循环遍历一组url 循环内执行go fetchUrl channel定义的长度为200
就是说希望当fetchUrl失败的时候 重新执行fetchUrl 但是实际运行时却发现经常执行到一半会阻塞 百思不得其解 希望大神指点

共 0 个回复