如何在不冻结线程/应用程序的情况下减慢方法执行速度
How to slow down a method execution without freezing the thread/application?
一切都在标题中:)
为什么我需要这个:
我在C++与Qt一起创建了一个小型可玩数独游戏。我制作了一种经典的回溯方法来解决这个问题。用户可以实时查看解决进度。我放了一个滑块,允许用户调整分辨率速度。
这就是我乞求解决方法以减慢该过程的内容:
sleep_for(milliseconds(delay)); //delay is a toggleable static variable
但是由于用户启动了分辨率,他无法更改速度(延迟),因为应用程序大部分时间都在休眠。
还有其他方法可以减慢该过程吗?
PS:请原谅我粗略的英语:/
使用 timerEvent()。QObject内置了定时器支持。将每个游戏步骤放在 timerEvent() 中,并以所需的间隔调用 startTimer()。这是迄今为止最简单的方法。
睡眠是减慢应用程序速度的好方法,因为它释放了处理器来做其他事情,如果你想允许用户改变速度,你应该在单独的线程上这样做,当时间变化时,中断睡眠线程并设置新的延迟。
好吧,
你做一个循环,并在一组间隔内调用绘制/写入函数
int interval = 0;
while(running){
interval++;
if(interval == 60){
draw();
}
}
或通过包括 Windows.h 来使用睡眠
int fps = 1000/30;
while(running){
Sleep(fps);
draw();
}
或将它们组合在一起
int fps = 1000/30;
int interval = 0;
while(running){
interval++;
Sleep(fps);
if(interval == 30){//every more or less 1 sec
draw();
}
}
相关文章:
- c++, 在子类中,如何在没有对象的情况下访问父类的方法?
- 模板方法访问正向声明的类仅在没有此指针的情况下无法编译
- 如何在没有实例的情况下获取非静态方法的类型?
- C++有什么方法可以在既不调用函数模板也不提供其模板参数的情况下引用函数模板?
- 如何在不使用静态矩形方法的情况下创建 IDOMPathGeometryPtr?
- C++ - 如何在不静态的情况下将回调绑定到类方法?
- C++ POCO - 如何在不使用 run() 方法的情况下启动线程池上的线程?
- 有没有一种惯用的方法可以在不存储变换或不必要地重新计算的情况下找到数组变换的最小/最大值?
- 循环依赖,在继承类的情况下使用覆盖方法
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- 在没有堆的情况下用两种方法构造对象
- 我们可以在没有新实例化的情况下声明一个抽象方法来返回抽象超类中的子类对象吗
- 在C++中,有没有一种方法可以让我在不传递参数的情况下拥有一个函数
- 有没有一种方法可以在不设置精度的情况下设置小数位数
- 如何在不迭代的情况下对数组中的每个元素调用方法
- 有没有一种方法可以在不复制数据的情况下从string_view创建字符串流
- C++11 - 获取编译时的所有类变量,并在没有 Boost 的情况下为它们调用方法
- C ++:如何在不创建对象的情况下在主函数中调用方法
- 推荐的方法在不初始化值的情况下使数组类型为 std::unique_ptr?
- 如何在不使用 vector::erase() 的情况下编写自定义 Vector 方法来删除元素?