Имеют ли таймеры лучшую точность по сравнению со sleep()

Давным-давно у меня была ошибка в моей программе. Основная причина заключалась в том, что функция C

sleep(60);

в редких случаях бездействовала менее 60 секунд.Или функция действительно заставляла поток спать более 60 с, но часы были автоматически изменены ОС (это кажется вероятным, поскольку ошибка происходила только на XX::00::00), она же проявлялся редко и только в "круглый час" (сон должен был закончиться в >xh0m0s, он закончился в x-1h59m59.99*s).
Затем мой руководитель проекта начал разглагольствовать о том, что он миллион раз говорил, что мы должны использовать только таймеры, а не спать. С тех пор я принял мнение, что таймеры более точны, чем sleep(), но теперь я чувствую, что должен попросить какой-нибудь более авторитетный источник. Итак:

  1. таймеры более точны, чем сон?
  2. (связанные) реализованы ли они глубоко (на уровне ОС) с использованием разных методов?
    Я знаю, что таймеры используются для обратных вызовов, сон просто задерживает выполнение текущего потока, я говорю о части реализации задержки выполнения.

Кстати, ОС была Linux, но мне нужен общий ответ, если это возможно.

5
задан Pavan Manjunath 28 June 2012 в 17:17
поделиться