как сделать приложение устойчивым к clock_settime - PullRequest
2 голосов
/ 29 марта 2011

Приложение (работающее на Linux 2.6.31) выполняется с использованием вызовов usleep.Однако, похоже, что он не устойчив к изменению даты (либо используя date из оболочки, либо используя clock_settime из другого процесса).Что нужно сделать, чтобы приложение не блокировалось?

edit1

Скажем, приложение хочет что-то делать каждые 100 мс.Когда работа завершена, она вызывает gettimeofday и выводит оставшиеся мс для ожидания до следующего среза 100 мс, а затем вызывает usleep.

1 Ответ

2 голосов
/ 29 марта 2011

Если вы хотите быть уверены в временном интервале, не касающемся текущей даты / времени, вы должны использовать этот вызов:

struct timespec tim;
uint64_t микросекунд;

clock_gettime (CLOCK_MONOTONIC, & tim);
микросекунд = 1000000ULL * tim.tv_sec + tim.tv_nsec / 1000;

Это время работы вашей системы, реальное полное аппаратное время (не может быть изменено).

О вашей периодической программе вы можете установить периодический обработчик с помощью alarm () и setitimer ().

...