Coroutine ≠ 多线程
以下解释全部基于Unity中:
Coroutine的执行仍然在MainThread中进行
Unity 使用StartCoroutine(IEnumertor)来开启协程,yield return 来进行返回
在协程中开启协程过程为栈操作
Unity中 :
yield return null ; //将在下一帧中从该现场继续执行
yield return WaitForEndOfFrame, WaitForSeconds, WaitForSecondsRealtime, WaitUntil, WaitWhile.等
使用方向:
1.同时读取一个列表非常的消耗内存。使用返回Enumertable<T>(可迭代的容器)函数,从而调用Enumertable.GetIterator().current返回当前返回的值,这样当我们调用的时候就会获得最新的被yield return i;返回的值。其次我们可以通过函数传递引用型参数,继而在当前调用函数中改变对象数据 举例如下:
打印结果以及运行流程解析如上;
2.等待固定帧数或者固定时间后继续执行该函数
3.等待指定某函数执行完毕后执行(该条例多少和2有互通之处,可以算作一个子集)