[Interest] QTimer and Qt::PreciseTimer

Thiago Macieira thiago.macieira at intel.com
Wed Jul 26 22:24:58 CEST 2017


On quarta-feira, 26 de julho de 2017 12:58:43 PDT Joshua Grauman wrote:
> Hello all,
> 
> I have a QTimer in my application that runs every 40ms. It doesn't run
> continuously, but I recall the start function every time my timer function
> is done so that the timer doesn't drift over time. My question though is
> about timeout overrun. If the system is busy, and so the timer is late,
> will Qt::PreciseTimer be more likely to return on time than
> Qt::CoarseTimer? In other words, I'm ok with the 5% accuracy of
> Qt::CoarseTimer normally (when the system isn't busy), but when the 40ms
> timer is getting close to 60ms, I want to avoid timer overrun.

The type of timer is not relevant. All timers behave the same way: if it's 
serviced as soon as it's available and the next wake up will always be the 
current time + interval (± coarseness, if applicable).

Qt does not control when the OS gives us CPU time to service the timers. If 
you need that, you need to consult your OS API and create a high-priority 
thread or process, something that usually requires privilege elevation. Qt 
cannot help you there.

> Does anyone have any more precise info about Qt::PreciseTimer than the
> docs which say:
> 
> "All timer types may time out later than expected if the system is busy
> or unable to provide the requested accuracy. In such a case of timeout
> overrun, Qt will emit activated() only once, even if multiple timeouts
> have expired, and then will resume the original interval."

There is no more info to be had.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center




More information about the Interest mailing list