并行处理多个 API 请求与异步/等待

时间:2021-07-23 10:39:50

标签: c# ajax multithreading api asynchronous

CPU 限制问题是需要 CPU 进行计算的问题。 IO 绑定问题是需要等待网络、磁盘或输入的问题。 单个 API 请求受 IO 限制。

问题是,当我使用 for 循环发出 100 个 API 请求时,我们是否说这些请求是 IO 绑定的?还是我们说它们受 CPU 限制?还是说它们都受 CPU 和 IO 限制?

通常对于 IO 绑定,我们使用多线程,或者如果我们使用单线程,我们可以使用 async/await。对于 CPU 绑定进程,我们使用并行编程或多处理或异步等待与 Task.Run。

对于我在 for 循环中处理 100 个 API 请求的示例,async/await 是否比多线程或 async/await+Task.Run 或 TPL 更好?

1 个答案:

答案 0 :(得分:3)

如果你有 100 个 I/O 密集型操作,那么这 100 个操作作为一个整体仍然是 I/O 密集型的。

CPU-bound 是为占用大量 CPU 时间的事情保留的。是的,从技术上讲,增加一个计数器并开始下一个 I/O 操作确实会执行 CPU 操作码,但是循环不会被视为“受 CPU 限制”,因为花费在 I/O 上的时间远远高于做的时间CPU 工作。

相关问题