首页 > 解决方案 > 游戏开发的多线程问题?

问题描述

我正在用 LWJGL3 编写游戏,并且对多线程的概念有一些疑问。

Q1:我知道如果你不需要多线程,你不应该添加它,因为它增加了复杂性,但是你何时以及如何知道你需要它?

Q2:是在开发之初就添加还是以后需要的时候添加?

Q3:多线程时面临的编码挑战具体是什么?我正在考虑在我的游戏中分离主线程和渲染线程,但我不确定为什么多线程会使这变得更加困难。我知道你不能保证一个线程需要多长时间才能运行,但是如果你有 2 个线程正在执行逻辑而不是一个执行逻辑而另一个执行渲染,这将是一个问题?

Q4:使用消息队列在线程之间进行通信是否适合游戏,或者这是否有点矫枉过正?

如果你能分享任何你认为有帮助的好资源,那就太好了。

标签: javamultithreadinglwjglgame-development

解决方案


Q1:通常,当某种处理需要一段时间而您不想挂起 UI 时,您会使用多线程。如果您的所有代码都在主线程上,那么您的 UI 在耗时的过程开始和结束之间的时间内变得无响应。如果您需要进行任何网络调用,您肯定需要将它们放在不同的线程上,Android 和 Swift 甚至不允许您在主线程上执行网络调用。

Q2:只要你做,没关系。如果您知道要使用它,您可以随时实现它,但事后没有太多阻止您使用多线程。

Q3:许多编码挑战与计时数据和避免任何空指针有关,因为如果您尝试访问的数据尚未到达,您的应用程序可能会崩溃。完成处理程序有助于确保某些功能仅在数据到达后发生。

Q4:如果你的意思是在线程之间持续传递所有数据,这有点不必要,你只需要在某个时间点传递你需要的数据。


推荐阅读