猿问

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

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


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")

    }

}

它不起作用,服务器没有收到任何请求


那么,有什么问题呢?


动漫人物
浏览 91回答 1
1回答

狐的传说

我认为这是因为您的应用程序在循环结束后立即终止。要处理此问题,您可以使用WaitGroup。并将您的代码更改为:func main(){&nbsp; &nbsp; wg := sync.Waitgroup{}&nbsp; &nbsp; for i:=0; i<5; i++{&nbsp; &nbsp; &nbsp; &nbsp; wg.Add(1)&nbsp; &nbsp; &nbsp; &nbsp; go func() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; defer wg.Done()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; http.Get("http://localhost:8080/8")&nbsp; &nbsp; &nbsp; &nbsp; }()&nbsp; &nbsp; }&nbsp; &nbsp; wg.Wait()}
随时随地看视频慕课网APP

相关分类

Go
我要回答