summary refs log tree commit diff stats
path: root/tests/niminaction/Chapter6/WikipediaStats/unguarded_access.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/niminaction/Chapter6/WikipediaStats/unguarded_access.nim')
-rw-r--r--tests/niminaction/Chapter6/WikipediaStats/unguarded_access.nim20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/niminaction/Chapter6/WikipediaStats/unguarded_access.nim b/tests/niminaction/Chapter6/WikipediaStats/unguarded_access.nim
new file mode 100644
index 000000000..7bdde8397
--- /dev/null
+++ b/tests/niminaction/Chapter6/WikipediaStats/unguarded_access.nim
@@ -0,0 +1,20 @@
+discard """
+  errormsg: "unguarded access: counter"
+  line: 14
+"""
+
+import threadpool, locks
+
+var counterLock: Lock
+initLock(counterLock)
+var counter {.guard: counterLock.} = 0
+
+proc increment(x: int) =
+  for i in 0 ..< x:
+    let value = counter + 1
+    counter = value
+
+spawn increment(10_000)
+spawn increment(10_000)
+sync()
+echo(counter)