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