summary refs log tree commit diff stats
path: root/lib/pure/concurrency
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2019-02-06 20:58:21 +0100
committerAndreas Rumpf <rumpf_a@web.de>2019-02-06 20:58:28 +0100
commit65f3e390e814f84fe745d1894cea7e2f6c881ec3 (patch)
tree887ee0639891a80d9255db61f1ec8a868110683c /lib/pure/concurrency
parentbfb2ad507802cf91384118c208bcdce8bd07fb4b (diff)
downloadNim-65f3e390e814f84fe745d1894cea7e2f6c881ec3.tar.gz
fixes #10584 [backport]
Diffstat (limited to 'lib/pure/concurrency')
-rw-r--r--lib/pure/concurrency/threadpool.nim7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/pure/concurrency/threadpool.nim b/lib/pure/concurrency/threadpool.nim
index 9c9425d9f..4846c610f 100644
--- a/lib/pure/concurrency/threadpool.nim
+++ b/lib/pure/concurrency/threadpool.nim
@@ -320,6 +320,10 @@ gSomeReady.initSemaphore()
 proc slave(w: ptr Worker) {.thread.} =
   isSlave = true
   while true:
+    if w.shutdown:
+      w.shutdown = false
+      atomicDec currentPoolSize
+      break
     when declared(atomicStoreN):
       atomicStoreN(addr(w.ready), true, ATOMIC_SEQ_CST)
     else:
@@ -340,9 +344,6 @@ proc slave(w: ptr Worker) {.thread.} =
       dec numSlavesRunning
 
     if w.q.len != 0: w.cleanFlowVars
-    if w.shutdown:
-      w.shutdown = false
-      atomicDec currentPoolSize
 
 proc distinguishedSlave(w: ptr Worker) {.thread.} =
   while true: