gpt4 book ai didi

go - 是否有非阻塞 http 客户端?

转载 作者:行者123 更新时间:2023-12-01 22:42:36 27 4
gpt4 key购买 nike

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

2年前关闭。




Improve this question




许多语言都有自己的高级非阻塞 HTTP 客户端,例如 python 的 aiohttp。即,它们发出 HTTP 请求;不要等待响应;当响应到达时,他们会进行某种回调。

我的问题是

  • 有一个 Go 包吗?
  • 或者我们只是创建一个使用普通 HTTP 客户端的 goroutine?
  • 哪种方式更好?
  • 最佳答案

    其他语言具有此类功能,因为当它们阻塞等待请求时,它们会阻塞它们正在使用的线程。 Java、Python 或 NodeJS 就是这种情况。因此,为了使它们有用,开发人员需要使用回调来实现这种长期存在的阻塞操作。其根本原因是使用了下面的 C 库,它阻塞了输入输出操作上的线程。

    Go 不使用 C 库(仅在某些情况下,但可以关闭)并自行进行系统调用。执行此操作时,执行当前 goroutine 的线程将其停放并执行另一个 goroutine。因此,您可以拥有大量阻塞的 goroutine 而不会耗尽线程。 Goroutines 在内存方面很便宜,线程是操作系统实体。

    在 Go 中使用 goroutine 更好。由于上述原因,不需要创建异步客户端。

    为了在 Java 中进行比较,您很快就会得到多个线程。下一步是将它们集中起来,因为它们的成本很高。池化意味着限制并发。

    关于go - 是否有非阻塞 http 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59421516/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com