我尝试过这样的事情:
struct timeval time1,time2;
double time3,time4;
gettimeofday(&time1, NULL);
gettimeofday(&time2, NULL);
time3 = (time1.tv_sec + 1) * 1000000 + time1.tv_usec;
time4 = (time2.tv_sec) * 1000000 + time2.tv_usec;
while(time3 > time4){
...
gettimeofday(&time2, NULL);
time4 = (time2.tv_sec) * 1000000 + time2.tv_usec;
}
但是它并没有按应有的方式工作。
最佳答案
我怀疑您的问题是整数溢出。但是,实际上没有必要使用双打。
按照此处所述使用timeval_subtract
:http://www.gnu.org/software/libc/manual/html_node/Elapsed-Time.html
然后看看结果的tv_sec
分量是否为非零。如果是这样,则已超过一秒钟。
另外,请不要将变量称为time1
,time2
,time3
和time4
。对于那些不得不稍后阅读您的代码的可怜的人来说,这非常令人困惑。建议starttime
和currenttime
或类似名称。