summary refs log tree commit diff stats
path: root/tests/threads
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2015-01-02 03:32:45 +0100
committerAraq <rumpf_a@web.de>2015-01-02 03:32:45 +0100
commit194b14a1827e5c812e5a149070ddebc27a2966f2 (patch)
tree37ec7f8a1332159ab0552142a84901b34a1c984a /tests/threads
parentaa8073627faadbda8c51c32a88a797ce83c1ef69 (diff)
downloadNim-194b14a1827e5c812e5a149070ddebc27a2966f2.tar.gz
fixes #1816
Diffstat (limited to 'tests/threads')
-rw-r--r--tests/threads/ttryrecv.nim35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/threads/ttryrecv.nim b/tests/threads/ttryrecv.nim
new file mode 100644
index 000000000..acccf182c
--- /dev/null
+++ b/tests/threads/ttryrecv.nim
@@ -0,0 +1,35 @@
+discard """
+  outputsub: "channel is empty"
+"""
+
+# bug #1816
+
+from math import random
+from os import sleep
+
+type PComm = ptr TChannel[int]
+
+proc doAction(outC: PComm) {.thread.} =
+  for i in 0.. <5:
+    sleep(random(100))
+    send(outC[], i)
+
+var
+  thr: TThread[PComm]
+  chan: TChannel[int]
+
+open(chan)
+createThread[PComm](thr, doAction, addr(chan))
+
+while true:
+  let (flag, x) = tryRecv(chan)
+  if flag:
+    echo("received from chan: " & $x)
+  else:
+    echo "channel is empty"
+    break
+
+echo "Finished listening"
+
+joinThread(thr)                                                       
+close(chan)