gpt4 book ai didi

c# - 异步等待性能?

转载 作者:IT王子 更新时间:2023-10-29 04:14:35 26 4
gpt4 key购买 nike

(只是一个理论问题 - 对于非图形用户界面应用)

假设我的这段代码有很多等待:

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

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

问题(还是理论上的)

可能这样一种情况,整个时间处理所有那些“释放回线程”和“取回线程”(此处为红色和绿色 :)

enter image description here

比单线程花费的时间更多,后者可以用少量延迟完成所有工作,

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

这种情况会发生吗?

最佳答案

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

在一般情况下,async 用于 I/O 绑定(bind)操作,与它们相比,线程管理的开销是检测不到的。大多数时候,异步操作要么需要很长时间(与线程管理相比),要么已经完成(例如缓存)。请注意,async 有一个“快速路径”,如果操作已经完成,它不会产生线程。

有关详细信息,请参阅 Zen of AsyncAsync Performance

关于c# - 异步等待性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23871806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com