Эквивалент GetTickCount() для Linux - программирование
Подтвердить что ты не робот

Эквивалент GetTickCount() для Linux

Я ищу эквивалент GetTickCount() в Linux.

В настоящее время я использую Python time.time(), который предположительно вызывает gettimeofday(). Меня беспокоит, что время, возвращенное (эпоха unix), может изменяться с ошибкой, если часы запутаны, например, NTP. Достаточно простое время работы системы или системы, которое только увеличивается положительно с постоянной скоростью.

Существует ли такая функция времени в C или Python?

4b9b3361

Ответ 2

Это работает:

#include <unistd.h>
#include <time.h>

uint32_t getTick() {
    struct timespec ts;
    unsigned theTick = 0U;
    clock_gettime( CLOCK_REALTIME, &ts );
    theTick  = ts.tv_nsec / 1000000;
    theTick += ts.tv_sec * 1000;
    return theTick;
}

да, get_tick() Является основой моих приложений. Состоит из одного конечного автомата для каждой "задачи", например, может выполнять многозадачность без использования потоков и Inter Process Communication Может реализовывать неблокирующие задержки.

Ответ 3

Вы должны использовать: clock_gettime(CLOCK_MONOTONIC, &tp);. Этот вызов не зависит от настройки системного времени, как GetTickCount() в Windows.

Ответ 4

Да, ядро ​​имеет таймеры с высоким разрешением, но это по-другому. Я бы рекомендовал вам взглянуть на источники любого нечетного проекта, который переносит это переносимым образом.

Из C/С++ я обычно #ifdef это и использую gettimeofday() в Linux, что дает мне разрешение в микросекундах. Я часто добавляю это как часть к секундам, так как эпоха, которую я также получаю, дает мне двойной.