使程序花费实际时间来执行C ++

时间:2013-02-27 15:52:18

标签: c++ time

我正在尝试模拟使用C ++实际花费时间的真实场景;我正在使用for循环将时间分解为五分钟的增量。

我想知道是否有任何方法告诉程序每秒只执行for循环的一步?这样程序就会变得“可观察”。

3 个答案:

答案 0 :(得分:6)

获取当前时间并添加频率,执行你的动作并等到计算出的时间。像这样。

#include <thread>
#include <chrono>

//...

while(whatever_condition()) {
    auto next=std::chrono::system_clock::now() 
             +std::chrono::seconds(1);

    do_whatever();

    std::this_thread::sleep_until(next);
}

http://en.cppreference.com/w/cpp/thread/sleep_until

注意使用普通的“sleep”和“usleep”函数是非标准的,并且不会考虑操作所需的时间。

编辑: 这是一个c ++ 11解决方案,但是如果没有C ++ 11 boost也为C ++ 98和03提供了这个功能。我相信这仍然比使用sleep更好

答案 1 :(得分:0)

有了睡眠,您可以让程序等待。我不知道这是不是你想要的。所以要等一秒钟,你输入:

  

睡眠(1000)

答案 2 :(得分:0)

它以一致的速度运行有多重要? sleep()是实现此目的的一种可能方法,但sleep在提供准确的时间片方面相当差。当然,游戏需要一直这样做,因此游戏程序员已经探索了各种各样的方法,你可以找到关于如何实现游戏循环的讨论here。中心理论是定期检查计时器并根据产生所需的每秒帧数进行更新。