Unity中的Coroutine原理猜测: 虚拟机分段执行机制, 同类型嵌套用栈存放实现串行执行:.NET虚拟机在每一帧循环中, 会依次进入每个编译器预定义好的入口。对于Coroutine类型,编译器需要产生一些代码,在Coroutine类型指定的时间或事件完成后(.net的虚拟机用函数指针进行标记管理现场和在流程中每帧检查时间或者事件满足后发送消息,将cpu所有权交给yield中断的现场,或是通过包含不同Coroutine迭代器的多个管理类管理各个coroutine, 每帧用coroutine子类通过多态检查时间或事件到达,将cpu所有权交给coroutine子类中断的现场),从yield中断后的代码处继续往下执行, 这样就形成了我们看到的一个function能分段执行的机制。 而对于嵌套Coroutine类型,会串行的执行而不是并行的,可能.net虚拟机对于同coroutine类型用栈存放,栈顶的先执行,从而实现串行执行,如果外层的不使用yield return,那么不会串行执行,而是并行执行。于是就可以解释上面例子中的执行次序问题。
相关推荐
Larry_Yanan6 小时前
QML学习笔记(四十二)QML的MessageDialog能不能别报错6 小时前
K8s学习笔记(十九) K8s资源限制sulikey7 小时前
【Linux权限机制深入理解】为何没有目录写权限仍能修改文件权限?十安_数学好题速析7 小时前
倍数关系:最多能选出多少个数Hello_Embed7 小时前
STM32 环境监测项目笔记(一):DHT11 温湿度传感器原理与驱动实现程序员大雄学编程9 小时前
「深度学习笔记4」深度学习优化算法完全指南:从梯度下降到Adam的实战详解新子y9 小时前
【小白笔记】PyTorch 和 Python 基础的这些问题rechol10 小时前
类与对象(中)笔记整理新子y10 小时前
【小白笔记】KNN 核心预测函数 _predict_one 的过程橘子是码猴子10 小时前
LangExtract:基于LLM的信息抽取框架 学习笔记