Unity中的Coroutine原理猜测: 虚拟机分段执行机制, 同类型嵌套用栈存放实现串行执行:.NET虚拟机在每一帧循环中, 会依次进入每个编译器预定义好的入口。对于Coroutine类型,编译器需要产生一些代码,在Coroutine类型指定的时间或事件完成后(.net的虚拟机用函数指针进行标记管理现场和在流程中每帧检查时间或者事件满足后发送消息,将cpu所有权交给yield中断的现场,或是通过包含不同Coroutine迭代器的多个管理类管理各个coroutine, 每帧用coroutine子类通过多态检查时间或事件到达,将cpu所有权交给coroutine子类中断的现场),从yield中断后的代码处继续往下执行, 这样就形成了我们看到的一个function能分段执行的机制。 而对于嵌套Coroutine类型,会串行的执行而不是并行的,可能.net虚拟机对于同coroutine类型用栈存放,栈顶的先执行,从而实现串行执行,如果外层的不使用yield return,那么不会串行执行,而是并行执行。于是就可以解释上面例子中的执行次序问题。
相关推荐
sz-lcw8 分钟前
MySQL知识笔记古译汉书40 分钟前
嵌入式铁头山羊STM32-各章节详细笔记-查阅传送门2301_800050993 小时前
DNS 服务器汇能感知3 小时前
光谱相机的未来趋势风已经起了6 小时前
FPGA学习笔记——图像处理之对比度调节(直方图均衡化)go_bai6 小时前
Linux--常见工具sjh21009 小时前
【学习笔记】20年前的微芯an1078foc技术,smo滑模位置估计,反电动势波形还不错,为何位置估计反而超前了呢?航Hang*9 小时前
Kurt-Blender零基础教程:第3章:材质篇——第1节:材质基础~原理化BSDF,添加有纹理材质与用蒙版做纹理叠加泽虞10 小时前
《C++程序设计》笔记p4峰顶听歌的鲸鱼12 小时前
29.Linux防火墙管理