gpt4 book ai didi

C++ - 每 X 毫秒执行一次函数

转载 作者:行者123 更新时间:2023-11-27 22:58:44 25 4
gpt4 key购买 nike

我似乎找不到一个好的答案:

我正在制作游戏,我希望逻辑循环与图形循环分开。换句话说,我希望游戏每 X 毫秒进行一次循环,而不管它显示多少帧/秒。

很明显,它们都会共享很多变量,所以我不能让线程/计时器来回传递一个变量……我基本上只是在寻找一种在后台设置计时器的方法每 X 毫秒发出一个标志来执行逻辑循环,而不管图形循环在哪里。

我愿意接受任何建议。似乎最好的选择是拥有 2 个线程,但我不确定在不不断同步大量数据的情况下,它们之间的最佳通信方式是什么。

最佳答案

您可以通过每次更新都交换“世界观”来很好地进行多线程处理。所以这是它的工作原理:

  1. 您当前的世界观由单个智能指针指向并且只读,因此无需锁定。
  2. 您的逻辑创建您的(第一个)世界 View ,发布它并安排渲染器。
  3. 您的渲染器获取指向您的世界 View 的指针的拷贝并渲染它(记住,只读)
  4. 与此同时,您的逻辑创造了一个新的、略有不同的世界观。
  5. 完成后,它会交换指向当前世界观的指针,将其发布为当前世界观。
  6. 即使渲染器仍然忙于旧世界 View ,也不需要锁定。
  7. 最终渲染器完成对(旧)世界的渲染。它捕获了新的世界观,开始了另一场奔跑。
  8. 与此同时,...(转到第 4 步)

您唯一需要的锁定是在您发布或获取指向世界的指针时。作为替代方案,您可以进行原子交换,但您必须确保使用可以执行此操作的智能指针。

关于C++ - 每 X 毫秒执行一次函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29835569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com