sure, I have updated the code with the following example:
proc producer(q: ptr SharedQueue[int]) =
q[].enqueue(10)
q[].enqueue(20)
q[].enqueue(30)
q[].enqueue(20)
proc consumer(q: ptr SharedQueue[int]) =
echo q[].dequeue()
echo q[].dequeue()
echo q[].dequeue()
echo q[].dequeue()
echo q[].dequeue()
echo q[].dequeue()
let q = cast[ptr SharedQueue[int]](allocShared0(sizeof(SharedQueue[int])))
var t1,t2: Thread[ptr SharedQueue[int]]
initSharedQueue(q[])
createThread(t1, producer, q)
createThread(t2, consumer, q)
joinThreads(t1,t2)