线程和协程有什么区别呢?

线程和协程有什么区别呢?,第1张

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

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

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

1.协程,即协作式程序,其思想是,一系列互相依赖的协程间依次使用CPU,每次只有一个协程工作,而其他协程处于休眠状态。协程实际上是在一个线程中,只不过每个协程对CUP进行分时,协程可以访问和使用unity的所有方法和component

2.线程,多线程是阻塞式的,每个IO都必须开启一个新的线程,但是对于多CPU的系统应该使用thread,尤其是有大量数据运算的时刻,但是IO密集型就不适合;而且thread中不能 *** 作unity的很多方法和component

该executation的coroutine可以在任何时候暂停使用产量发言。产量返回值指定当coroutine复会。 Coroutines良好行为时,模拟多个帧。 Coroutines几乎没有任何的性能开销。 StartCoroutine功能总是立即返回,但是,您可以产生的结果。这将等到couroutine已完成执行。

当使用JavaScript ,没有必要使用StartCoroutine ,编译器会帮您进行此动作。写作时C #代码,你必须拨打StartCoroutine

/ /在这个例子中,我们显示了如何调用一个coroutine ,并继续执行

/ /函数并行。

/ / -在0秒,打印“从0.0 ”

/ / -在0秒,打印“在WaitAndPrint油剂0.0 ”

/ / - 2秒钟后,打印“ WaitAndPrint 2.0 ”

打印( “启动” + Time.time )

/ /启动功能WaitAndPrint作为coroutine 。并等待,直到它完成

WaitAndPrint ( 2.0 )

打印( “在WaitAndPrint油剂” + Time.time )

功能WaitAndPrint ( waitTime为: float ) (

/ /停止执行的waitTime秒

产量WaitForSeconds ( waitTime )

打印( “ WaitAndPrint ” + Time.time )

功能StartCoroutine ( methodName :字符串,值:对象=无效) : Coroutine

描述

启动一个coroutine名为methodName 。

在大多数情况下要使用上述StartCoroutine变化。然而StartCoroutine方法使用一个字符串名称,您就可以使用StopCoroutine具体方法的名称。缺点是,字符串版本具有更高的运行时开销开始coroutine ,您可以通过唯一的一个参数


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8078682.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存