The way QTimer is handled is that it is put into a queue sorted by time when it should fire next (now+interval). When events are processed by the application, when the event queue is already empty the dispatcher checks the timer queue. If the time of next timeout is less or equal to the current time, the timer is fired and if it is not single shot, it is rescheduled in the queue again (now+interval). I would assume there is also some mechanism to prevent latency buildup.
Bookmarks