summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2014-12-09 01:03:56 +0100
committerAraq <rumpf_a@web.de>2014-12-09 01:03:56 +0100
commit795a7762ccf387140a6fa6d2a8964cb0654a3732 (patch)
tree542908a463be9fe419de495f3e255aadbf0820f6
parent5979d35ab2052b467e89ade90a7b3a47a50e2a28 (diff)
downloadNim-795a7762ccf387140a6fa6d2a8964cb0654a3732.tar.gz
minor improvement to the barrier implementation
-rw-r--r--compiler/platform.nim2
-rw-r--r--lib/pure/concurrency/threadpool.nim4
-rw-r--r--todo.txt5
3 files changed, 8 insertions, 3 deletions
diff --git a/compiler/platform.nim b/compiler/platform.nim
index 2e78d4fc5..c6cb3d244 100644
--- a/compiler/platform.nim
+++ b/compiler/platform.nim
@@ -1,6 +1,6 @@
 #
 #
-#           The Nimrod Compiler
+#           The Nim Compiler
 #        (c) Copyright 2012 Andreas Rumpf
 #
 #    See the file "copying.txt", included in this
diff --git a/lib/pure/concurrency/threadpool.nim b/lib/pure/concurrency/threadpool.nim
index 28ef25d95..0bd97043a 100644
--- a/lib/pure/concurrency/threadpool.nim
+++ b/lib/pure/concurrency/threadpool.nim
@@ -65,7 +65,9 @@ proc barrierEnter(b: ptr Barrier) {.compilerProc, inline.} =
 proc barrierLeave(b: ptr Barrier) {.compilerProc, inline.} =
   atomicInc b.left
   when not defined(x86): fence()
-  if b.interest and b.left == b.entered: signal(b.cv)
+  # We may not have seen the final value of b.entered yet,
+  # so we need to check for >= instead of ==.
+  if b.interest and b.left >= b.entered: signal(b.cv)
 
 proc openBarrier(b: ptr Barrier) {.compilerProc, inline.} =
   b.entered = 0
diff --git a/todo.txt b/todo.txt
index 6068c049b..5b0d00e16 100644
--- a/todo.txt
+++ b/todo.txt
@@ -3,7 +3,10 @@ version 0.10
 
   Repetition renders the ridiculous reasonable.
 
-- introduce ``--experimental`` switch
+- document 'converter'
+- document the tables module better
+
+
 - c2nim depends on the compiler
 - make nimble part of the distribution
 - split idetools into separate tool