Fix async timers execution. (#5448)
This commit is contained in:
parent
b47df72e77
commit
78de355ec6
2 changed files with 10 additions and 2 deletions
|
|
@ -167,8 +167,12 @@ type
|
||||||
callbacks: Deque[proc ()]
|
callbacks: Deque[proc ()]
|
||||||
|
|
||||||
proc processTimers(p: PDispatcherBase) {.inline.} =
|
proc processTimers(p: PDispatcherBase) {.inline.} =
|
||||||
while p.timers.len > 0 and epochTime() >= p.timers[0].finishAt:
|
#Process just part if timers at a step
|
||||||
|
var count = p.timers.len
|
||||||
|
let t = epochTime()
|
||||||
|
while count > 0 and t >= p.timers[0].finishAt:
|
||||||
p.timers.pop().fut.complete()
|
p.timers.pop().fut.complete()
|
||||||
|
dec count
|
||||||
|
|
||||||
proc processPendingCallbacks(p: PDispatcherBase) =
|
proc processPendingCallbacks(p: PDispatcherBase) =
|
||||||
while p.callbacks.len > 0:
|
while p.callbacks.len > 0:
|
||||||
|
|
|
||||||
|
|
@ -138,8 +138,12 @@ type
|
||||||
callbacks: Deque[proc ()]
|
callbacks: Deque[proc ()]
|
||||||
|
|
||||||
proc processTimers(p: PDispatcherBase) {.inline.} =
|
proc processTimers(p: PDispatcherBase) {.inline.} =
|
||||||
while p.timers.len > 0 and epochTime() >= p.timers[0].finishAt:
|
#Process just part if timers at a step
|
||||||
|
var count = p.timers.len
|
||||||
|
let t = epochTime()
|
||||||
|
while count > 0 and t >= p.timers[0].finishAt:
|
||||||
p.timers.pop().fut.complete()
|
p.timers.pop().fut.complete()
|
||||||
|
dec count
|
||||||
|
|
||||||
proc processPendingCallbacks(p: PDispatcherBase) =
|
proc processPendingCallbacks(p: PDispatcherBase) =
|
||||||
while p.callbacks.len > 0:
|
while p.callbacks.len > 0:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue