进程有自己独立的堆和栈,即不共享堆也不共享栈,进程由操作系统调度
线程拥有自己独立的栈和共享的堆,共享堆不共享栈,线程亦有操作系统调度(标准线程是这样的)
协程和线程一样共享堆不共享栈,协程由程序员在协程的代码里面显示调度
一个应用程序一般对应一个进程,一个进程一般有一个主线程,还有若干个辅助线程,线程之间是平行的,在线程里面可以开启协程,让程序在特定的时间内运行。
协程和线程的区别是:协程避免了无意义的调度,由此可以提高性能,但也因此,程序员必须自己承担调度的责任,同时,协程也失了标准线程使用多CPU的能力。
你可以写一段顺序的代码,然后标明哪里需要暂停,然后在下一帧或者一段时间后,系统会继续执行这段代码。
IEnumerator LongComputation()
{
while(someCondition)
{
/* 做一系列的工作 */
// 在这里暂停然后在下一帧继续执行
yield return null;
}
}
迭代器的特征;
1.返回IEnumerator
2.使用yield关键字
迭代器;声明序列中的下一个值或者是一个无意义的值。如果使用yield x(x是指一个具体的对象或数值)的话,那么movenext返回为true并且current被赋值为x,如果使用yield break使得movenext()返回false。