Avoid generating more than one engine.timer message per second when usleep is interrupted by signals.
git-svn-id: http://yate.null.ro/svn/yate/trunk@6361 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
parent
caf2ae7042
commit
fa4721bea7
|
@ -1749,11 +1749,16 @@ int Engine::run()
|
|||
}
|
||||
|
||||
// Attempt to sleep until the next full second
|
||||
long t = 1000000 - (long)(Time::now() % 1000000) - corr;
|
||||
u_int64_t tstart = Time::now();
|
||||
long t = 1000000 - (long)(tstart % 1000000) - corr;
|
||||
if (t < 250000)
|
||||
t += 1000000;
|
||||
XDebug(DebugAll,"Sleeping for %ld",t);
|
||||
Thread::usleep(t);
|
||||
long diff = 0;
|
||||
while (t > diff) {
|
||||
Thread::usleep(t - diff);
|
||||
diff = Time::now() - tstart;
|
||||
}
|
||||
Message* m = new Message("engine.timer",0,true);
|
||||
m->addParam("time",String(m->msgTime().sec()));
|
||||
if (nodeName())
|
||||
|
|
Loading…
Reference in New Issue