【发布时间】:2019-10-02 09:54:18
【问题描述】:
这是这个问题的后续问题:
If async-await doesn't create any additional threads, then how does it make applications responsive?
还有这篇博文:
http://blog.stephencleary.com/2013/11/there-is-no-thread.html
关于链接问题的接受答案。他描述了调用await 时发生的步骤。
他在第 3 步和第 4 步中写道,当这种情况发生时,当前线程返回到调用上下文,这使得消息循环可用于接收其他消息,从而使应用程序响应。然后在第 5 步中,他写道,我们调用 await 的任务现已完成,原始方法的其余部分在收到新消息后继续执行以继续该方法的其余部分。
我不明白的是,如果没有新线程并且原始线程正忙于调用上下文,那么该任务是如何开始执行的?
所以我转向博客文章,它描述了整个操作实际上是如何在低得多的级别上完成的(老实说,我真的不知道它们是如何工作的),然后只是一个通知它已经完成了。 .但是我不明白为什么突然在任务的情况下,你可以依靠其他硬件而不是CPU来进行计算,这使得不创建新线程成为可能。如果这个任务有点复杂怎么办计算,那么我们不需要CPU吗?然后我们回到我正在写的内容,当前线程已经忙于调用上下文......
【问题讨论】:
标签: c# multithreading asynchronous async-await