make asyncdispatch.poll completing all opterations that can be comple… (#6911)

introduce asyncdispatch.drain that completes all operations that can be completed immediately; implements #6523
This commit is contained in:
Andreas Rumpf 2017-12-19 12:39:50 +01:00 • committed by GitHub
commit 85ac3130aa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 14 deletions

View file

@ -579,9 +579,9 @@ else:
var event = newSelectEvent()
selector.registerEvent(event, 1)
discard selector.select(0)
event.setEvent()
event.trigger()
var rc1 = selector.select(0)
event.setEvent()
event.trigger()
var rc2 = selector.select(0)
var rc3 = selector.select(0)
assert(len(rc1) == 1 and len(rc2) == 1 and len(rc3) == 0)
@ -611,7 +611,7 @@ else:
var event = newSelectEvent()
for i in 0..high(thr):
createThread(thr[i], event_wait_thread, event)
event.setEvent()
event.trigger()
joinThreads(thr)
assert(counter == 1)
result = true