Unity中的Coroutine原理猜测: 虚拟机分段执行机制, 同类型嵌套用栈存放实现串行执行:.NET虚拟机在每一帧循环中, 会依次进入每个编译器预定义好的入口。对于Coroutine类型,编译器需要产生一些代码,在Coroutine类型指定的时间或事件完成后(.net的虚拟机用函数指针进行标记管理现场和在流程中每帧检查时间或者事件满足后发送消息,将cpu所有权交给yield中断的现场,或是通过包含不同Coroutine迭代器的多个管理类管理各个coroutine, 每帧用coroutine子类通过多态检查时间或事件到达,将cpu所有权交给coroutine子类中断的现场),从yield中断后的代码处继续往下执行, 这样就形成了我们看到的一个function能分段执行的机制。 而对于嵌套Coroutine类型,会串行的执行而不是并行的,可能.net虚拟机对于同coroutine类型用栈存放,栈顶的先执行,从而实现串行执行,如果外层的不使用yield return,那么不会串行执行,而是并行执行。于是就可以解释上面例子中的执行次序问题。
相关推荐
六点_dn5 小时前
RabbitMQ学习笔记-部署和使用2501_926978337 小时前
以说明书 DNA 为模板——完整 AGI 的结构图景天天爱吃肉82187 小时前
商用车多体动力学实战笔记|第6篇:动力传动系统(发动机、变速箱、分动器、TCS、LSD限滑差速)IT19957 小时前
Dify 实战笔记:工作流核心玩法 + 开源 AI 应用全解析dong1326978 小时前
Agent Skills学习笔记摇滚侠9 小时前
《SpringBoot 3:入门与应用实战》第 15 章 生产级特性 管理 Spring Boot 应用 阅读笔记liferecords10 小时前
阅读笔记:ExtractBench: A Benchmark for Schema-Guided Enterprise Document Extraction尤乐娃子11 小时前
进入大厂(厂子大)实习Day8一只小菜鸡..11 小时前
南京大学 操作系统 (JYY) 学习笔记:持久化的黑魔法——从磁铁、刻坑到闪存电荷aFakeProgramer11 小时前
Linux版本兼容问题及RTA-VRTE环境配置笔记