[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