Windows中的C微秒?

时间:2015-05-26 09:37:00

标签: c windows time

好的,几个小时前我问this,我决定用C做同样的测试。

示例1:

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

void main()
{
    printf("Time testing, pure c\n");

    struct timeval tv;
    int i;
    int values[1000];
    useconds_t usec = 1000;

    for (i = 0; i < 1000; i++)
    {
        gettimeofday( &tv, NULL );
        values[i] = tv.tv_usec;
        usleep(usec);
    }

    for (i = 0; i < 1000; i++)
    {
        printf("%d\n", values[i]);
    }
}

输出:

...
110977
111977
112977
113977
114978
115978
116978
...

好的,不错! 1毫秒睡眠没问题,现在让我们试试100 us sleep(相同的代码,只使用c = 100):

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

void main()
{
    printf("Time testing, pure c\n");

    struct timeval tv;
    int i;
    int values[1000];
    useconds_t usec = 100;

    for (i = 0; i < 1000; i++)
    {
        gettimeofday( &tv, NULL );
        values[i] = tv.tv_usec;
        usleep(usec);
    }

    for (i = 0; i < 1000; i++)
    {
        printf("%d\n", values[i]);
    }
}

输出:

...
674680
675680
676680
677680
678680
679680
680681
681681
...

这很糟糕,因为它的结果是一样的!只改变毫秒,并且usecs不会改变! 那是怎么回事,我的错误在哪里? 我可以在Windows中正确地获得微秒吗?

0 个答案:

没有答案