diff options
Diffstat (limited to 'tests/threads/ttryrecv.nim')
-rw-r--r-- | tests/threads/ttryrecv.nim | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/threads/ttryrecv.nim b/tests/threads/ttryrecv.nim new file mode 100644 index 000000000..fcff94e78 --- /dev/null +++ b/tests/threads/ttryrecv.nim @@ -0,0 +1,36 @@ +discard """ + matrix: "--mm:refc" + outputsub: "channel is empty" +""" + +# bug #1816 + +from random import rand +from os import sleep + +type PComm = ptr Channel[int] + +proc doAction(outC: PComm) {.thread.} = + for i in 0 ..< 5: + sleep(rand(50)) + send(outC[], i) + +var + thr: Thread[PComm] + chan: Channel[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) |