.NET中I/O绑定操作的调度

本文关键字:操作 调度 绑定 NET | 更新日期: 2023-09-27 18:20:07

如果我所在的线程不需要响应,并且持续执行依赖于I/O绑定调用(HttpClient请求)的结果,那么在.NET中异步实现调用有什么价值吗?

Windows是否知道我正在等待I/O操作,并在数据到达之前不安排线程?

我记得在某个地方读到过它,但恐怕我仍然很难理解它是如何工作的,以及何时可以依赖它。

.NET中I/O绑定操作的调度

不,在那里使用async没有任何价值。正如您所怀疑的,Windows将知道线程正在等待IO,并且在数据到达之前不会调度线程。

然而,异步的思想是,您实际上不需要创建一个新线程。async的想法是(我在这里偷工减料;互联网上有更好的文档),它试图做一些像你在这里手动做的事情。因此,async不必创建一个新线程,而是为您创建一个线程。(它实际上并没有创建一个新线程,但你已经明白了。)

如果这需要高性能,我不建议以现在的方式实现它。异步会更好。在您的情况下,当您处理1000个请求时,您将有1000个线程,这不是一个好主意。异步将更智能地实现这一点,并为您提供更好的性能。

使用async的基本优点(除了性能之外)是,它就像实际上只在UI线程上编程一样。以前,这会锁定你的应用程序,但使用异步,你的应用会保持响应。这确实是异步的主要优势。