gettimeofday返回不正确的结果

时间:2018-10-31 10:31:00

标签: c linux virtualbox

我遇到一个非常奇怪的问题。我正在使用def repl(m): return m.group(0)+' <property 4> value </property 4>\n' xml_str = re.sub('<item(?:(?!<property 4).)*?(?=</item>)', repl, xml_str, 0, re.S) 控制I / O库中的超时。我已经隔离了第二个调用gettimeofday的返回时间比第一次更早的问题。

我已经完成了一个简单的测试演示,揭示了问题所在。它只会在运行Ubuntu 18.04.1 LTS的虚拟机(virtualbox)中发生。

gettimeofday

运行代码时,我得到如下信息:

#include <unistd.h>
#include <stdio.h>
#include <sys/time.h>

unsigned long GetTickCount()
{
    struct timeval start, end;
    unsigned long myTickCount;
    gettimeofday(&start, NULL);
    myTickCount =start.tv_sec*1000+start.tv_usec/1000;
    return myTickCount;
}


main()
{
        unsigned long a,b;
        while(1) {
                a=GetTickCount();
                usleep(100000);
                b=GetTickCount();
                if(a>b)
                        printf("a: %ld, b:%ld, b-a=%ld\r\n",a,b,b-a);
        }
}

如果仔细检查,将发现故障每31.5秒出现一次。

有关正在发生的事情的一些提示? 这是一种由virtualbox调整的时钟漂移吗?

0 个答案:

没有答案