parent
ab47a870bc
commit
c7cc934632
1 changed files with 27 additions and 0 deletions
27
tests/threads/t5626.nim
Normal file
27
tests/threads/t5626.nim
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
import threadpool
|
||||||
|
|
||||||
|
var ch: Channel[int]
|
||||||
|
ch.open
|
||||||
|
var pch = ch.addr
|
||||||
|
|
||||||
|
proc run(f: proc(): int {.gcsafe.}): proc() =
|
||||||
|
let r = spawn f()
|
||||||
|
return proc() = await(r)
|
||||||
|
|
||||||
|
var working = false
|
||||||
|
|
||||||
|
proc handler(): int =
|
||||||
|
while true:
|
||||||
|
let (h, v) = pch[].tryRecv()
|
||||||
|
if not h:
|
||||||
|
discard cas(working.addr, true, false)
|
||||||
|
break
|
||||||
|
1
|
||||||
|
|
||||||
|
proc send(x: int) =
|
||||||
|
ch.send(x)
|
||||||
|
if cas(working.addr, false, true):
|
||||||
|
discard run(handler)
|
||||||
|
|
||||||
|
for x in 0..1000000:
|
||||||
|
send(x)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue