2024/3
关于Unity 引擎的跨平台原理
这里涉及Mono以及IL2PP的一些问题。- CIL(Common Intermediate Language)通用中间件语言。
Mono的编译流程
首先,Mono已经可以做到跨平台,所有代码都会在Mono VM中运行。
但是缺点是,Mono的各平台VM需要维护且Mono需运行在VM中会比原生CPP更慢。
IL2PP的编译流程
在IL代码之后,再进行一次转译,将其转化为Cpp代码,然后再利用不同平台的优化过的编译器,编译为对于平台的目标代码。
UnityRuntime(运行时)
提供统一的Api和功能,驱动Unity运行时引擎的执行环境。
协程和线程
以目前的粗鄙理解,线程是操作系统层面控制,协程是用户的应用层控制。协程终归还是归它的线程管。
- 首先需要理解并发,并行,串行的区别。
- 多个协程在一个线程里面并发的执行,起到类似多线程的并发作用。但是线程的调度和销毁需要依靠操作系统,太过耗时,而协程是轻量级的。
当协程遇到阻塞IO时线程会被挂起,此时便无法再执行其他操作,所以做Socket编程相关的项目时,需要注意将IO转移到别的不会影响主线程的地方。