在C中使用CLOCKS_PER_SEC是否保证获得1秒?

我知道clock()不提供挂钟时间,并且CLOCKS_PER_SEC是系统相关值。假设我不关心系统相关问题,我可以假设下面的代码在GNU/LinuxWindows 中总是等待 1 秒,因为我测试过它对我来说似乎没问题。还是我应该坚持使用依赖于系统的sleep()/usleep()函数?

void wait_a_sec()
{
    clock_t start = clock();
    do
    {
        // wait 1 sec
        /**
         * Second call to clock() gives the processor time in clock ticks
         * since first call to it.
         * CLOCKS_PER_SEC: clock ticks per sec.
         */
    } while ( clock() < (start + CLOCKS_PER_SEC) );
}

回答

不,clock()给你你的程序使用的 CPU 时间。没有时间过去。

例如,如果您有一个 CPU 并启动该程序的两个实例,它将等待每个实例消耗 1 秒的活动 CPU 时间,即 2 秒。

此外,忙于等待通常是一个坏主意。坚持sleep


以上是在C中使用CLOCKS_PER_SEC是否保证获得1秒?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>