如何关闭所有"睡着的goroutine"?

时间:2017-05-06 19:37:24

标签: go channel goroutine

我在for循环中运行了一个goroutine:

    func main(){
           for _, i := range x{
               go httpRequests(i, ch)
           }

           for i := range ch{
              print i

        }
    }

func httpRequests(i, ch){
           for _, x := range y{
               go func(string x){
                  do something with i
                  ch <- result
              }(x)
           }


           }

当我跑步时,它说所有的goroutines都睡着了。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

你开始了3个goroutines(go serviceReq(i, httpCh))传递一个频道。然后,您只能在该频道上收到一次ch := (<-httpCh).serviceData)。

而不是你应该在循环中收到:

for resp := range httpCh {
    output = append(output, resp.serviceData)
}