diff options
author | Araq <rumpf_a@web.de> | 2015-06-06 11:50:35 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2015-06-06 11:59:35 +0200 |
commit | a730a974ed7c585b2f3ade88e06eb308244fa83e (patch) | |
tree | 8464333d3ca496c5c980a41648f1555f0786b489 /tests/parallel/tptr_to_ref.nim | |
parent | 706080dcbdafd8c87f73edac3707a2e5605656b8 (diff) | |
download | Nim-a730a974ed7c585b2f3ade88e06eb308244fa83e.tar.gz |
fixes #2854
Diffstat (limited to 'tests/parallel/tptr_to_ref.nim')
-rw-r--r-- | tests/parallel/tptr_to_ref.nim | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/parallel/tptr_to_ref.nim b/tests/parallel/tptr_to_ref.nim new file mode 100644 index 000000000..66d618481 --- /dev/null +++ b/tests/parallel/tptr_to_ref.nim @@ -0,0 +1,26 @@ +# bug #2854 + +import locks, threadpool, osproc + +const MAX_WORKERS = 10 + +type + Killer = object + lock: Lock + bailed {.guard: lock.}: bool + processes {.guard: lock.}: array[0..MAX_WORKERS-1, foreign ptr Process] + +template hold(lock: Lock, body: stmt) = + lock.acquire + defer: lock.release + {.locks: [lock].}: + body + +proc initKiller*(): Killer = + initLock(result.lock) + result.lock.hold: + result.bailed = false + for i, _ in result.processes: + result.processes[i] = nil + +var killer = initKiller() |