我尝试过这样的事情:

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_subtracthttp://www.gnu.org/software/libc/manual/html_node/Elapsed-Time.html

然后看看结果的tv_sec分量是否为非零。如果是这样,则已超过一秒钟。

另外,请不要将变量称为time1time2time3time4。对于那些不得不稍后阅读您的代码的可怜的人来说,这非常令人困惑。建议starttimecurrenttime或类似名称。

09-27 08:08