(只是一个理论问题 - 对于非 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(使用前将#替换为@)