Таймери

Feb 17, 2010 21:23

  1. Не викориcтовуйте time і gettimeofday для обчислення часових інтервалів - все може зламатись при синхронізації часу (скажімо, по NTP чи вручну).
  2. Є clock_gettime/clock_getres/clock_settime - інтерфейс до кількох системних таймерів. Для обчислення інтервалів підійде CLOCK_MONOTONIC.
  3. На деяких системах (залежить від конфігурації uClibc) CLOCK_MONOTONIC недоступний, хоча ядро його реалізовує. Тут допоможе syscall(__NR_clock_gettime, CLOCK_MONOTONIC, ×pec).
  4. Є прекрасна утилітка для перевірки доступності системних таймерів. Її джерельний код можна знайти тут: http://www.gelato.unsw.edu.au/archives/linux-ia64/0411/11792.html
  5. Я ще нагуглив getitimer/setitimer але так їх і не спробував, бо сискол вирішив всі мої проблеми з таймерами.

PS: а джерельні коди ядра не така вже і страшна штука як їх малюють. Я б навіть сказав що там все логічно і неможливо загубитись. Не вперше туди лазю :)

carwash, програмування

Previous post Next post
Up