c# - 长异步等待链会导致大量内存消耗吗? (理论上)

标签 c# .net async-await

查看这段代码:

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

假设 a,b,c,d 也有嵌套的异步等待(等等)

Async/await POV - 对于每个 await ,都有一个状态机被保留。

问题(理论):

由于每个状态机都保存在内存中,这是否会导致内存消耗大?
这可能是一个模糊的问题,但如果有很多状态,似乎不可避免地不会想知道所保留的状态机的大小。

最佳答案

As each state machine is kept in memory , could this cause big memory consumption ?

不太可能。每个状态机将在外部占用几十个字节。

所以只有当你有很多时它才重要。嵌套不会真正导致这种情况,但执行 Task[] 的成员可能会。

但这并不是任何其他资源类型的新内容或不同之处。

关于c# - 长异步等待链会导致大量内存消耗吗? (理论上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55781057/

相关文章:

c# - 从 C# 刷新 Excel 数据透视表

c# - Linq LIKE 功能

网络共享上的 .NET 安全异常

c# - 在 C# 中,如何在不知道其类型的情况下向下转换先前向上转换的对象?

reactjs - 如何将 async/await 与 useEffect React hook 一起使用,我尝试了很多示例,但没有任何效果

c# - 带有等待异步和线程的C#控制流

c# - 从 asp 标签中获取 DayOfWeek 值

c# - 大型可滚动数据 SL4 的虚拟化性能问题

asp.net - 为 ASP.NET MVC 站点创建 robots.txt

javascript - await 是否保证在 JavaScript 中没有赋值的执行顺序?