Permalink
Browse files

Workaround for the high cpu usage issue in coroutines on linux (#5186)

Fixes high cpu usage when all coroutines are asleep
  • Loading branch information...
1 parent d04ca6e commit d356c37185acdb7dec1feff5454209612e9ea9ad @xomachine xomachine committed with Araq Jan 11, 2017
Showing with 3 additions and 3 deletions.
  1. +3 −3 lib/pure/coro.nim
View
@@ -66,14 +66,14 @@ proc run*() =
## Starts main event loop which exits when all coroutines exit. Calling this proc
## starts execution of first coroutine.
var node = coroutines.head
- var minDelay: float = 0
+ var minDelay: int = 0 # in milliseconds
var frame: PFrame
while node != nil:
var coro = node.value
current = coro
- os.sleep(int(minDelay * 1000))
+ os.sleep(minDelay)
- var remaining = coro.sleepTime - (epochTime() - coro.lastRun);
+ var remaining = int((coro.sleepTime - (epochTime() - coro.lastRun)) * 1000)
if remaining <= 0:
remaining = 0
let res = setjmp(mainCtx)

0 comments on commit d356c37

Please sign in to comment.