C++ 这个项目需要多线程吗?

C++ 这个项目需要多线程吗?,c++,python,multithreading,sfml,ode-library,C++,Python,Multithreading,Sfml,Ode Library,目标平台:Windows XP高中电脑 所需库:SFML、GLEW、ODE、Python(用于嵌入) 计划中的功能使我相信我可能需要多线程: 多达一百个机器人都实时解释python脚本 所有的机器人及其组件都在物理仿真中与其环境相适应 在播放器周围的大区域中生成详细的环境 游戏运行时可能需要将文件写入硬盘 (除了这些功能,目标平台让我担心) 此项目是否需要多线程?此项目是否需要多线程? 如果您的项目需要您同时执行大量独立任务,那么多线程是一个不错的选择。 注意,独立和同时上的压力,基本规则是:

目标平台:Windows XP高中电脑

所需库:SFML、GLEW、ODE、Python(用于嵌入)

计划中的功能使我相信我可能需要多线程:

  • 多达一百个机器人都实时解释python脚本
  • 所有的机器人及其组件都在物理仿真中与其环境相适应
  • 在播放器周围的大区域中生成详细的环境
  • 游戏运行时可能需要将文件写入硬盘
  • (除了这些功能,目标平台让我担心)

  • 此项目是否需要多线程?

    此项目是否需要多线程?

    如果您的项目需要您同时执行大量独立任务,那么多线程是一个不错的选择。
    注意,独立同时上的压力,基本规则是:


    更多同步的需要更少是多线程的关键。

    相信我,当你的应用程序需要多线程时,你就会知道这一点;)GUI将冻结,应用程序将不会响应。但是就像Als所说的,如果你需要同时执行很多任务,这是一个很好的选择。

    那么,如果物理直接影响逻辑,我可能不应该将物理与逻辑分开来处理?两者都会处理几何数据,所以我可能会遇到问题。我应该像我的图形编程朋友建议的那样,将图形与逻辑和物理分开吗?@MilesRufat Latre:是的,确实应该将图形与逻辑和物理分开,通常建议使用松散耦合的模块,这会给您带来更大的灵活性。您可以使用像这样整洁的设计模式。此外,如果需要在不同线程中执行的不同任务之间进行大量同步(对于EX:需要对相同的全局数据等进行操作),那么您应该考虑将这些减少到最低限度,尝试遵循上面提到的基本规则。我唯一不需要和其他东西同步的就是图形。可以将机器人的逻辑与游戏逻辑分开。我会进一步调查的。谢谢你的建议,这很有帮助!编辑:该死!我还不能接受你的回答!还有3分钟。@MilesRufat Latre:请注意,仅仅因为需要同步并不意味着就应该完全放弃多线程。在任何实时系统中,都很难有一个不需要同步的系统。有一个微妙的平衡,在我看来,没有固定的规则来决定这一点,但你需要实践和经验。同步就像盐一样,总是需要一些,但太多会破坏汤。我读过关于MVC的书!我只是不太明白为什么它对多线程游戏如此有用,直到现在!编辑:根据我以前(很少)使用多线程的经验,我不能从消息线程中拆分窗口(因此也不能拆分图形)线程。将消息存储在图形线程中并从逻辑线程访问可以吗?该项目是一个游戏,因此它将使用多线程或简单的游戏循环。所有任务都必须连续执行,尽管有些任务必须在相对其他任务的特定时间执行。