При попытке заснуть с помощью 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);
}
}
Этот пост писал на другой машине ввинде, поэтому могут быть ошибки в коде))