C++设置每秒循环的速度

Asa*_*aaj 4 c++ time loops modifier while-loop

我对C++比较陌生,所以我没有丰富的经验.我学习了Python,我正在尝试使用C++编写的Python代码的改进版本.但是,我希望它能够实时工作,所以我需要设置While循环的速度.我确信有答案,但我找不到.我想要一个类似的代码:

rate(timeModifier * (1/dt))
Run Code Online (Sandbox Code Playgroud)

这是我在Python中使用的代码.我可以设置变量dt以使计算更精确,timeModifier可以设置速度的两倍或三倍(1将其设置为实时).这意味着程序将以每秒1次/秒的速度循环.我知道我可以在标题中包含time.h,但我想我对C++太新了解了解如何将其转换为我的需求.

sly*_*oty 5

你可以编写自己的计时器类:

#include <ctime>

class Timer {
    private:
        unsigned long startTime;
    public:
        void start() {
            startTime = clock();
        }

        unsigned long elapsedTime() {
            return ((unsigned long) clock() - startTime) / CLOCKS_PER_SEC;
        }

        bool isTimeout(unsigned long seconds) {
            return seconds >= elapsedTime();
        }
};


int main() 
{
    unsigned long dt = 10; //in seconds
    Timer t;
    t.start();

    while(true) 
    {
        if(t.elapsedTime() < dt) 
        {
            //do something to pass time as a busy-wait or sleep
        }
        else 
        {
            //do something else
                    t = Timer(); //reset the timer
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,不鼓励忙等待,因为它们会占用CPU.如果您不需要执行任何操作,请使用sleep命令(Windows)或usleep(Linux).有关使用C++创建计时器的更多信息,请参阅此链接.


ink*_*boo 4

在 C++ 中你不能以同样的方式做到这一点。Sleep在 Windows 或usleep*NIX上,您需要在计算循环中手动调用某种睡眠函数。