usleep () для вычисления прошедшего времени ведет себя странно

Я вычисляю время, прошедшее в миллисекундах для каждого последующего вызова функции-обработчика, используя код ниже. Когда я использую usleep (1000), т. Е. Разница во времени между каждым вызовом составляет 1 мс, составляет 10 мс, а когда я использую usleep (1000000), т. Е. Неожиданно интервал между каждым вызовом, равный 1 секунде, уменьшается до менее 1 мс. Ниже приведен фрагмент кода:

    #include
    #include
    #include
    #include

    struct timeval start_time;
    void handler(int);

    int main()
    {
            struct timeval current_time;
            int i=0;
            gettimeofday(&start_time,0);
            gettimeofday(¤t_time,0);
            printf("%012.3fms: emulationbegins\n",((current_time.tv_usec-start_time.tv_usec)/1000.0));

            while(i++

Ответы на вопрос(2)

Ваш ответ на вопрос