【问题标题】:Why .NET HttpResponseMessage.Content methods for reading are async?为什么 .NET HttpResponseMessage.Content 读取方法是异步的?
【发布时间】:2019-12-23 14:36:58
【问题描述】:

我注意到,HttpResponseMessage.ContentReadAsStringAsync() 方法。当此操作需要 cpu 并且任务反应会增加更多 CPU 工作时,将其设为异步有什么意义?

【问题讨论】:

  • 如果您不关心响应正文,那么就没有必要从网络中读取整个响应,这是一个异步操作。
  • 等待来自远程 HTTP 端点的响应绝对不需要任何 CPU。恰恰相反,同步版本会不必要地阻塞线程。

标签: c# .net async-await task httpclient


【解决方案1】:

这不是纯粹的 CPU 密集型操作。在响应较大的请求中,您可以在通过网络接收到整个响应正文之前开始读取响应正文。

响应的第一部分可能已经在内存中,但是您在读取响应时很可能会遇到一个点,您需要等待通过网络接收其余数据。这允许您异步等待而不阻塞线程。

【讨论】:

    猜你喜欢
    • 2019-06-05
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    相关资源
    最近更新 更多