UniTask如何做到“零分配”

池化了状态机

UniTask标记了对应的生成器。
截图

截图

截图

生成器的Task会帮忙创建值类型的Task对象。

截图

截图

同时从池里面取出状态机,而不是临时分配。

截图

而且MoveNext的返回类型采用Action,而不是迭代器(C# 8.0也是acton)。

截图

yield是个struct值类型

截图

delay操作是从池中分配。

截图

参考:
asyncmethodbuilder属性文档
https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/attributes/general#asyncmethodbuilder-attribute

UniTask源码
https://github.com/Cysharp/UniTask

posted @ 2025-12-10 16:32  昂流  阅读(2)  评论(0)    收藏  举报
//替换成自己路径的js文件 hhttp(s)://static.tctip.com/tctip-1.0.4.min.js