如何解决在 C 中使用 CLOCKS_PER_SEC 是否保证获得 1 秒?
我知道 clock() 不会给出挂钟时间,并且 CLOCKS_PER_SEC 是系统相关的值。假设我不关心系统相关问题,我可以假设下面的代码在 GNU/Linux 和 Windows 中总是等待 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
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。