golang http.Get 请求以通常的方式工作,但在 go routines 中不工作

golang http.Get request works usual way, but do not work inside go routines

我有一些服务器在处理 GET 请求。需要为此服务器创建高负载 简单测试客户端:

func main(){
    http.Get("http://localhost:8080/8")
}

有效,服务器显示他收到了请求

另一个测试:

func main(){
    for i:=0; i<5; i++{
        go func() {
            http.Get("http://localhost:8080/8")
        }()
    }
}

甚至

func main(){
    for i:=0; i<5; i++{
        go http.Get("http://localhost:8080/8")
    }
}

没有成功,服务器没有收到任何请求

那么,问题是什么?

我认为这是因为您的应用程序在循环结束后立即终止。

要处理此问题,您可以使用 WaitGroup。并将您的代码更改为:

func main(){

    wg := sync.Waitgroup{}

    for i:=0; i<5; i++{
        wg.Add(1)
        go func() {
            defer wg.Done()
            http.Get("http://localhost:8080/8")
        }()
    }

    wg.Wait()
}