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()
}
我有一些服务器在处理 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()
}