协程官方doc解释
A coroutine is a function that can suspend its execution(yield) until the given given YieldInstruction finishes.
StartCoroutine开启协程 先执行协程中的代码 碰到yield return时控制权交给unity引擎
            引擎继续做接下来的工作例如第一次yield return之后执行StartCoroutine下一行代码
            直到满足yield指令的要求才会重新进入协程中的yield点
            unity像是做如下的事情:
            IEnumerator r = someCoroutine;
            while (r.MoveNext())
            {
                while (!GetYieldCondition(r.Current))
                {
                    //do other things
                }
            }
另外Invoke和InvokeRepeat实际上都是协程,并不是多线程
在unity里边使用.Net多线程做一些事情是非常好的,比如解压资源 更新资源等。
因为单开线程的话 不会影响主线程卡顿,这样UI就不会卡了。
但是开的线程里边不能执行unity主线程的mono代码。线程启动后,执行完毕自动结束该线程、可以同时启动多个线程做事。
原文:http://www.cnblogs.com/friedRib/p/6906264.html