При попытке заснуть с помощью clock_nanosleep() получается неточный результат - ошибка от +1 мс до секунды с фигом, притом раз на раз не приходится. Точней - один раз запускаю тест - ошибка от 1 до 5 мс, но и это ОЧЕНЬ много. другой раз ошибка может быть десятки мс, третий 0.5 - 2 секунды. Что я делаю не так?
Код для теста:
#include <stdio.h> #include <time.h>
int main() { struct timespec before_sleep, after_sleep, time_for_sleep; while(1) { clock_gettime(CLOCK_MONOTONIC, &before_sleep); time_for_sleep = before_sleep; time_for_sleep.tv_nsec += 100000000; // прибавляем 100 мс
clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &time_for_sleep, NULL); //засыпаем на 100 мс
clock_gettime(CLOCK_MONOTONIC, &after_sleep);
printf(«before: %d:%d - sec:nsec», before_sleep.tv_sec, before_sleep.tv_nsec); printf(«after: %d:%d - sec:nsec», after_sleep.tv_sec, after_sleep.tv_nsec);
} }