用户登录
用户注册

分享至

unity携程

  • 作者: hello122846
  • 来源: 51数据库
  • 2020-10-04
线程和C#的线程没区别,重点在于协程。
协程Coroutine并不是多线程的,只是运转的结果很像多线程而已。
MonoBehavior的每个周期里都会检查一次是否需要执行协程,如果需要,就执行。所以是Unity的主线程调用了协程里的代码,你要是写个死循环的话照样会把主线程卡死,这点和Update挺像的。
所以,它们只是看起来很像,实际没啥共同之处。。。



  v
先简要说下结论:
协同程序(coroutine)与多线程情况下的线程比较类似:有自己的堆栈,自己的局部变量,有自己的指令指针(ip,instruction pointer),但与其它协同程序共享全局变量等很多信息。

协程(协同程序): 同一时间只能执行某个协程。开辟多个协程开销不大。协程适合对某任务进行分时处理。

线程: 同一时间可以同时执行多个线程。开辟多条线程开销很大。线程适合多任务同时处理。

1.协程,即协作式程序,其思想是,一系列互相依赖的协程间依次使用cpu,每次只有一个协程工作,而其他协程处于休眠状态。协程实际上是在一个线程中,只不过每个协程对cup进行分时,协程可以访问和使用unity的所有方法和component
2.线程,多线程是阻塞式的,每个io都必须开启一个新的线程,但是对于多cpu的系统应该使用thread,尤其是有大量数据运算的时刻,但是io密集型就不适合;而且thread中不能操作unity的很多方法和component
软件
前端设计
程序设计
Java相关