异步等待性能?

2024-04-12

(只是一个理论问题 - 对于非 GUI 应用程序)

假设我有很多这个代码awaits:

public async Task<T> ConsumeAsync()
    {
          await A();
          await b();
          await c();
          await d();
          //..
    }

每个任务可能需要很短的时间,

Question(再次,理论上)

There could be的情况总交易时间与所有这些“释放线程”和“取回线程”(这里是红色和绿色:)

正在服用more比单个线程可以以少量延迟完成所有工作的时间,

我的意思是,我想成为最有生产力的人,但相反,由于所有这些来回切换 - 我实际上失去了生产力。

这样的场景会发生吗?


是的,理论上。通常情况下,在现实世界中不会。

在常见情况下,async用于 I/O 密集型操作,与它们相比,线程管理的开销是不可察觉的。大多数时候,异步操作要么花费很长时间(与线程管理相比),要么已经完成(例如,缓存)。注意async有一个“快速路径”,如果操作已经完成,它就会启动,但不会产生线程。

欲了解更多信息,请参阅异步之禅 http://channel9.msdn.com/Events/TechDays/TechDays-2012-Belgium/239 and 异步性能 http://msdn.microsoft.com/en-us/magazine/hh456402.aspx.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

异步等待性能? 的相关文章

随机推荐