进程process和线程thread都是一个时间段的描述,是CPU工作时间段的描述。
由于CPU的运行速度过快,它执行程序是轮转执行的,每个程序都是一个进程,线程是进程中的一个个部分。一个应用程序一般对应一个进程,一个进程一般有一个主线程,还有若干个辅助线程,线程之间是平行运行的,在线程里面可以开启协程,让程序在特定的时间内运行。
进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。
线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度(标准线程是的)。
协程和线程一样共享堆,不共享栈,协程由程序员在协程的代码里显示调度。
协程和线程的区别是:协程避免了无意义的调度,由此可以提高性能,但也因此,程序员必须自己承担调度的责任,同时,协程也失去了标准线程使用多CPU的能力。
C#支持多线程,unity不支持线程(为了规避在线程中操作UI),但推出了协程,协程可以模拟线程的操作,但unity本身是基于.Net的,所以unity可以使用C#中封装的线程,协程执行顺序参考脚本执行顺序图
网友评论