Unity中的Coroutine原理猜测: 虚拟机分段执行机制, 同类型嵌套用栈存放实现串行执行:.NET虚拟机在每一帧循环中, 会依次进入每个编译器预定义好的入口。对于Coroutine类型,编译器需要产生一些代码,在Coroutine类型指定的时间或事件完成后(.net的虚拟机用函数指针进行标记管理现场和在流程中每帧检查时间或者事件满足后发送消息,将cpu所有权交给yield中断的现场,或是通过包含不同Coroutine迭代器的多个管理类管理各个coroutine, 每帧用coroutine子类通过多态检查时间或事件到达,将cpu所有权交给coroutine子类中断的现场),从yield中断后的代码处继续往下执行, 这样就形成了我们看到的一个function能分段执行的机制。 而对于嵌套Coroutine类型,会串行的执行而不是并行的,可能.net虚拟机对于同coroutine类型用栈存放,栈顶的先执行,从而实现串行执行,如果外层的不使用yield return,那么不会串行执行,而是并行执行。于是就可以解释上面例子中的执行次序问题。
相关推荐
江屿风3 小时前
【Plain Language Large Model】【从麦当劳点餐到Redis接入:MCP如何让AI工具集成变简单】流食般投喂海绵宝宝转agent3 小时前
Leetcode二叉树算法个人理解小oo呆3 小时前
【学习心得】MCP工具开发学习笔记2601_961146204 小时前
实验室用等离子表面处理设备处理汽车PP内饰件和PBT骨架的一点记录二十七日秋4 小时前
算法刷题笔记「Day 1|四道 OJ 入门题里的深坑」星恒随风4 小时前
Linux Socket TCP编程(二):逐文件重构多进程、多线程与线程池服务器,深入fork、pthread_create、popen和std::bindhkNaruto5 小时前
【AI】深度学习、强化学习、深度强化学习基础概念笔记无心水6 小时前
15、云原生架构设计理论与实践 核心考点与学习笔记动词ing6 小时前
【学习笔记】51单片机 独立按键控制LED显示二进制叼烟扛炮6 小时前
Linux 学习笔记(三十九):网络基石——TCP/IP 模型与 UDP 实战