如何在不冻结 thread/application 的情况下减慢方法执行速度?

How to slow down a method execution without freezing the thread/application?

一切尽在标题中:)

为什么我需要这个:

我用 Qt 用 C++ 创建了一个小型的可玩数独游戏。我做了一个经典的回溯方法来解决它。用户可以在real-time中看到解析进度。我放了一个滑块允许用户调整分辨率速度。

这就是我在请求解决方法时放慢进程的内容:

 sleep_for(milliseconds(delay)); //delay is a toggleable static variable

但是由于用户启动了分辨率,他无法更改速度(延迟),因为应用程序大部分时间都在休眠。

还有其他方法可以减慢进程吗?

ps : 请原谅我粗糙的英语 :/

Sleep 是降低应用程序速度的好方法,因为它可以释放处理器来做其他事情,如果您想让用户更改速度,您应该在单独的线程上执行此操作,当时间更改会中断休眠线程并设置新延迟。

好吧,你做一个循环,然后在一组间隔

中调用draw/write函数
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();
    }
}

使用 timerEvent()。 QObject 具有内置的计时器支持。将每个游戏步骤放入 timerEvent() 并以所需的时间间隔调用 startTimer()。这是迄今为止最简单的方法。