# so something like this type Scheduler = object var lock {.global.}: Lock queue_thr: Thread[Scheduler] queue {.global, guard: lock.}: Deque[string] = initDeque[string]() initLock lock proc sch_thread(sch: Scheduler) {.thread.} = {.cast(gcsafe).}: withLock lock: let str = "last" queue.addLast(str) proc main = var sch: Scheduler createThread(queue_thr, sch_thread, sch) joinThread(queue_thr) withLock lock: echo queue main()