首页 > 解决方案 > 在接受输入时运行后台循环 (C++)

问题描述

我目前正在开发一个简单的游戏,但我对其中一个核心机制感到非常困惑。我希望能够运行一个后台循环,每秒钟左右更新一次信息(例如货币、位置等)。但是,我希望用户能够随时输入操作而不会中断循环。然后,这些操作将改变后台循环更新信息的方式。我最近的尝试是让两个线程同时运行。一种会运行后台时钟,另一种会持续开放输入并做出适当的反应。但是,我发现输入线程很难影响后台线程。他们都只是在自己的小世界里奔跑。

关于如何解决这个问题的任何想法?多线程是正确的方法吗?任何帮助,将不胜感激 :)。如果需要,我可以展示我的一些代码。

标签: c++multithreadingvisual-studioloops

解决方案


简单的方法:如果更新过程不花费太多时间,则在用户进行任何更改后立即更新信息。这样你就不需要多线程了。基本思路,如果有变化就更新。

高级方法:您将有 2 个线程。第一个线程接收来自用户的操作,将其排队。第二个线程读取队列中的动作并根据动作更新信息。看起来像这样:INPUT 线程 -> [up,down,...,left,right,up] -> UPDATE 线程

您可以轻松地搜索解决方案,因为这类问题非常“经典”。


推荐阅读