I was interested in implementing a library like malbolgia myself, I'll look at the source code, the locker implementation is what I need.
The following works: import malebolgia import malebolgia / lockers type Example = object s: string c: int proc threadFunc(lockedObj: Locker[Example]) = lock lockedObj as obj: obj.s.add($obj.c) inc obj.c proc threadHandler() = var m = createMaster() var ex: Example var myObj = initLocker(ex) m.awaitAll: for i in 0..4: m.spawn threadFunc(myObj) lock myObj as obj: echo obj echo "Work" threadHandler() echo "Done." Run I thought passing `ref` to Threads worked as [the nim memory model](https://nim-lang.org/docs/mm.html) says that ORC has a shared heap. I think understand well how Nim deals with memory, what I don't understand is how this interacts with threads. But this is good as I plan to create a PR to add more documentation comments to the standard library and I feel like [the typed thread page](https://nim-lang.org/2.0.2/typedthreads.html) needs an update.