关注

我的应用为什么应该使用线程而不是协程?

问题
  • Unity有一个称为协程的功能,在某些情况下可以替换线程。

原因
 
Unity 协程使用并发方式,而线程是使用并行。
 
解决方案
 
Unity API不是线程安全的,您可以在没有任何实际限制的情况下创建线程。事实上,Unity API应该从主线程调用。
 
为什么在有协程时需要创建线程?
协程与线程无关。协程方法可以一段接一段时间执行,但所有进程仍然由一个主线程完成。 如果一个协程尝试执行耗时的操作,整个应用程序暂时停止。
 
线程不同。 单独的线程的执行由操作系统管理(这实际上取决于.NET实现)。 如果有多个逻辑CPU,则许多线程就能在不同的CPU上执行。所以任何大开销的操作不会停止您的游戏,但它可能会放慢一点。
 
当线程次优时,协程可能是首选:
主要是因为创建线程是一个开销比较大的操作。 如果使用线程轮询设计模式,您必须将计算的数据同步到主线程。 这是一个非常独特的操作,所以您必须非常仔细地考虑这一点。 甚至可能需要执行一些性能测试,因为同步可能是比首先计算主线程中的数据更高开销的操作。
 
更重要的是线程是危险的,所以必须非常小心同步的东西! 您还需要记住,Unity API本身就不是线程安全的,因此所有调用Unity API都应该从主线程完成。
 
当线程的使用何时是必要的:
当你计算一些高开销的或长期的操作,线程仍然可以是首选。 这方面的例子有:
 
 
 
  • 人工智能
  • 寻路
  • 网络通信
  • 文件操作
更多信息
 
 
这篇文章有帮助吗?
1 人中有 1 人觉得有帮助
还有其它问题?提交请求

0 评论

登录写评论。