[Interest] QTimer and Qt::PreciseTimer
Joshua Grauman
jnfo-c at grauman.com
Sat Jul 29 01:15:27 CEST 2017
I have a related but different question.
I am reading the time with QDateTime::currentMSecsSinceEpoch(). How
susceptible is this time to clock drift/jitter/etc. on Linux (Kubuntu
16.04.2)? I know ntpd is constantly updating the time, and there is some
error involved in this. If I am reading the time from
QDateTime::currentMSecsSinceEpoch() and using it to set a QTimer every
40ms, how does ntpd constantly correcting the time going to affect this,
if at all?
FYI: My timer slot basically looks like this:
void myClass::animationTimerSlot(void)
{
if(firstTime)
startTime=QDateTime::currentMSecsSinceEpoch();
dowork();
frameCnt++;
int t = startTime + ((double)frameCnt*40.0) - QDateTime::currentMSecsSinceEpoch();
if(t<0)
t=0;
animTimer->start(t);
}
Thanks!
Josh
On Wed, 26 Jul 2017, Thiago Macieira wrote:
> On quarta-feira, 26 de julho de 2017 14:23:29 PDT Joshua Grauman wrote:
>> Thanks so much for the response.
>>
>> So do I have this right then?
>>
>> QTimer doesn't use any actually timers in the OS (no system
>> calls/interrupts). It is all handled internally by Qt's event loop. So if
>> the OS doesn't give Qt CPU time, it will miss a timer. Calling 'nice'
>> (Linux) on the process may help with this.
>
> On Windows, it will use multimedia timers (timerSetEvent()) for precise
> timers, SetTimer() for the others. How the OS services those, I don't have a
> clue.[*]
>
> I have a pending patch to make it use CLOCK_MONOTONIC_COARSE on Linux (and
> CLOCK_MONOTONIC_FAST on BSDs), but I've run into some problems that some
> timers wake up in the wrong order. The coarse and precise timers are not
> sync'ed in the OS: even if you query the latter, the former may not update, so
> it may look like the monotonic clock went backwards.
>
> Until then, everything uses the same clock on Unix and simply depends on when
> the OS wakes us up from ppoll().
>
> [*] I have a vague memory of the regular timers having a 4 ms granularity.
> --
> Thiago Macieira - thiago.macieira (AT) intel.com
> Software Architect - Intel Open Source Technology Center
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
>
More information about the Interest
mailing list