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

标签 c++ loops time while-loop modifier

我是 C++ 的新手,所以我没有太多经验。我已经学习了 Python,并且我正在尝试对我用 C++ 编写的 Python 代码进行改进。但是,我希望它实时工作,所以我需要设置 While 循环的速度。我确定有答案,但我找不到。我想要一个类似的代码:

rate(timeModifier * (1/dt))

这是我在 Python 中使用的代码。我可以设置一个变量 dt 来使计算更精确,并设置 timeModifier 来将速度提高一倍或三倍(1 将其设置为实时)。这意味着程序每秒将执行循环 1/dt 次。我知道我可以在 header 中包含 time.h,但我想我对 C++ 还太陌生,无法理解如何将其转换为我的需要。

最佳答案

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

#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
        }
    }
}

请注意,不鼓励使用忙等待,因为它们会占用 CPU。如果您不需要做任何事情,请使用 sleep命令(Windows) 或 usleep (Linux)。有关在 C++ 中制作计时器的更多信息,请参阅 this link .

关于C++ 设置每秒 While 循环的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10653611/

相关文章:

C++ CodeDOM 解析器错误 : Line: 75, 列:57 --- 内部错误

c++ - 读取内存中的位

c++ - QCoreApplication 的 aboutToQuit() 信号在 Qt 5.1.0 中是否仍然受支持?

c++ - numeric_limits<int>::is_modulo 在逻辑上是否矛盾?

jquery 按钮和多个项目

ios - 跟踪应用程序的运行时间 iOS

python - 使用 time.time() 给函数计时通常返回 0 秒

python - 在 python 中使用高精度时间戳

java - 循环和逻辑语句

r - 获取通过重采样计算的多重回归系数值