1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
discard """
errormsg: "'consumer' is not GC-safe"
line: 19
"""
# bug #2257
import threadpool
type StringChannel = Channel[string]
var channels: array[1..3, StringChannel]
type
MyObject[T] = object
x: T
var global: MyObject[string]
var globalB: MyObject[float]
proc consumer(ix : int) {.thread.} =
echo channels[ix].recv() ###### not GC-safe: 'channels'
echo global
echo globalB
proc main =
for ix in 1..3: channels[ix].open()
for ix in 1..3: spawn consumer(ix)
for ix in 1..3: channels[ix].send("test")
sync()
for ix in 1..3: channels[ix].close()
when isMainModule:
main()
|