IBM AIX std::clock()?

IBM AIX std::clock()?

本文关键字:clock std IBM AIX      更新时间:2023-10-16

我在 IBM AIX 中执行以下代码。

int main(void)
{
    printf( "startn");
    double time1 = (double)clock();      /* get initial time */
    time1 = time1 / CLOCKS_PER_SEC;      /*    in seconds    */
    boost::this_thread::sleep_for(boost::chrono::seconds(5));
    /* call clock a second time */
    double time2 = (((double)clock()) / CLOCKS_PER_SEC);
    double timedif = time2 - time1;
    printf( "The elapsed time is %lf seconds, time1:%lf time2:%lf CLOCKS_PER_SEC:%ldn", 
            timedif));
}

结果是:

2018-04-07 09:58:37 开始
2018-04-07 09:58:42 运行时间为 0.000180 秒,time1:0.000000 时间2:0.000181 CLOCKS_PER_SEC:1000000

我不知道为什么经过的时间是 0.000180(为什么不是 5(?

根据手册

返回程序消耗的处理器时间。

它是程序消耗的CPU时间,而不是物理时间。休眠程序不占用 CPU 时间。因此,用原始的话来说,它是从mainsleep的时间间隔加上sleep之后直到返回的时间间隔。

如果你想获得系统/实时,请查看std::chrono::system_clock类。

#include <chrono>
using std::chrono::system_clock;
system_clock::time_point time_now = system_clock::now();