I am working on a project that spawns threads that operate on a global memory array (seq[seq[uint64]]) and am trying to wrap my head around the locks module and passing variables to a threaded funtion. If I pass a single variable it works, but fails with N>1 variables.
Slightly modifying the example from the docs: (this doesn't work) import std/locks var L: Lock var x = 0 proc threadFunc(a, b: int) {.thread.} = acquire(L) # lock stdout x.inc(a) echo b release(L) proc doIt() = initLock(L) var thr: array[0..4, Thread[int]] for i in 0..high(thr): createThread(thr[i], threadFunc, (i, i*i)) joinThreads(thr) deinitLock(L) doIt() echo x Run I have tried variations of Thread[int] as well Thread[x, y: int] Run Thread[int, int] Run So I am at an impasse as the function in my actual code takes a handful of varied arguments. Any pointers?