LINUX.ORG.RU

clock_nanosleep(); Процесс спит не заданное время.


0

1

При попытке заснуть с помощью 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);

} }

нужно ядро c realtime-патчем

anonymous
()

все правильно.

The suspension time caused by this function may be longer than requested because the argument value is rounded up to an integer multiple of the sleep resolution, or because of the scheduling of other activity by the system.

ono
()

tv_nsec переполняется.

AptGet ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.