我试图编写一个Timer类(不知道boost有一个),然后当它不起作用时,我试着输出clock()的值,使用这个代码:
#include <ctime>
#include <iostream>
int main()
{
for(int i = 0; i < 50; ++i)
{
std::cout << std::clock() << " ";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我运行程序时,我得到一系列的0.我有类似的经验,当使用提升线程休眠功能将时间延长一点时间(虽然几秒后,它从0跳到10,000并保持输出10,000).
我正在运行Gentoo Linux.这是平台吗?一个C++的东西?这是怎么回事?
编辑:奇怪的是,在几秒钟之后跳转到10000 ,而不是几毫秒.当我一次睡觉我的线程一秒钟时,花了五六秒才达到10000.但是,如果我理解正确的话.线程花费的时间对clock()计数没有贡献?(这有意义;如果它正在睡觉,它为什么会执行时钟周期?)
该clock()返回值以微秒指定.但是,clock()实现使用的任何低级系统调用的典型粒度都要低得多.因此,在您的系统上,似乎粒度为10毫秒.另外请注意,clock()没有不测量实时-它测量程序所使用的CPU时间.因此,当程序控制CPU时,时间会流动,并且当程序暂停时会冻结 - 例如,休眠.