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






