我试图编写一个计时器类(不知道boost有一个),但当它无法工作时,我尝试输出clock()的值,使用以下代码:
#include <ctime>
#include <iostream>
int main()
{
for(int i = 0; i < 50; ++i)
{
std::cout << std::clock() << " ";
}
return 0;
}
当我运行程序时,我得到一系列的0。当我使用boost线程睡眠函数来稍微延长时间(尽管几秒钟后,它会从0跳到10000并继续输出10000),我有类似的经验。我正在运行Gentoo Linux。这是平台问题吗?C++问题?发生了什么?
编辑:奇怪的是,跳到10000需要多个秒,而不是毫秒。当我每次让线程睡眠一秒钟时,需要五六秒才能到达10000。然而,如果我理解正确的话,线程睡眠的时间不会对clock()计数产生贡献?(这是有道理的;为什么它在睡眠时要执行时钟周期呢?)
clock()
计数也会停止。在你的例子中,只有在唤醒和再次休眠之间的短时间段才会被计算。 - slacker