go - golang http.Get请求按常规方式工作,但在go例程内部不工作

标签 go goroutine

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

关于go - golang http.Get请求按常规方式工作,但在go例程内部不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60464077/

相关文章:

go - 访问 token 在 GO 中过期时如何使用谷歌刷新 token ?

go - 使用 golang 从 S3 读取多个文件

go - 第一个协程示例,奇怪的结果

Golang 非阻塞 channel 不起作用

Golang 时间(分秒)

string - 如何在 Go 中解析毫秒以来的时间戳字符串?

concurrency - Go 中惯用的可变大小工作池

go - 有没有更好的选择去使用常规 sleep

haskell - 如何使用 Haskell 模拟 Go 的 channel ?

Golang 通过反射将 nil 值作为接口(interface)传递