查看这段代码:
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/