Unity中的Coroutine原理猜测: 虚拟机分段执行机制, 同类型嵌套用栈存放实现串行执行:.NET虚拟机在每一帧循环中, 会依次进入每个编译器预定义好的入口。对于Coroutine类型,编译器需要产生一些代码,在Coroutine类型指定的时间或事件完成后(.net的虚拟机用函数指针进行标记管理现场和在流程中每帧检查时间或者事件满足后发送消息,将cpu所有权交给yield中断的现场,或是通过包含不同Coroutine迭代器的多个管理类管理各个coroutine, 每帧用coroutine子类通过多态检查时间或事件到达,将cpu所有权交给coroutine子类中断的现场),从yield中断后的代码处继续往下执行, 这样就形成了我们看到的一个function能分段执行的机制。 而对于嵌套Coroutine类型,会串行的执行而不是并行的,可能.net虚拟机对于同coroutine类型用栈存放,栈顶的先执行,从而实现串行执行,如果外层的不使用yield return,那么不会串行执行,而是并行执行。于是就可以解释上面例子中的执行次序问题。
相关推荐
智者知已应修善业1 天前
【51单片机2个按键控制流水灯运行与暂停】2023-9-6sakiko_1 天前
UIKit学习笔记5-使用UITableView制作聊天页面Alice-YUE1 天前
【js高频八股】防抖与节流小陈phd1 天前
TensorRT 入门完全指南(一)——从核心定义到生态工具全解析是上好佳佳佳呀1 天前
【前端(十一)】JavaScript 语法基础笔记(多语言对比)handler011 天前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法其实防守也摸鱼1 天前
CTF密码学综合教学指南--第四章05候补工程师1 天前
【ROS 2 具身智能】Gazebo 仿真避坑指南:从“幽灵机器人”到传感器数据流打通chushiyunen1 天前
pandas使用笔记、数据清洗、json_normalizeHERR_QQ1 天前
端到端课程自用 4 规划 基于自规划AR的端到端规划 AI 笔记