From d356c37185acdb7dec1feff5454209612e9ea9ad Mon Sep 17 00:00:00 2001 From: Dmitriy Fomichev Date: Wed, 11 Jan 2017 13:01:03 +0400 Subject: [PATCH] Workaround for the high cpu usage issue in coroutines on linux (#5186) Fixes high cpu usage when all coroutines are asleep --- lib/pure/coro.nim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pure/coro.nim b/lib/pure/coro.nim index 2a81b73173..0373708d09 100644 --- a/lib/pure/coro.nim +++ b/lib/pure/coro.nim @@ -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)