Fix async timers execution. (#5448)

This commit is contained in:
Andrey Sobolev
2017-03-01 15:43:24 +07:00
committed by Andreas Rumpf
parent b47df72e77
commit 78de355ec6
2 changed files with 10 additions and 2 deletions

View File

@@ -167,8 +167,12 @@ type
callbacks: Deque[proc ()]
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()
dec count
proc processPendingCallbacks(p: PDispatcherBase) =
while p.callbacks.len > 0:

View File

@@ -138,8 +138,12 @@ type
callbacks: Deque[proc ()]
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()
dec count
proc processPendingCallbacks(p: PDispatcherBase) =
while p.callbacks.len > 0: