Please look at **Why not?** at the right. But it works when the sequence is copied.
Could't this unnecessary overhead be avoided? import sequtils, os, threadpool var aSeq = @[10, 20, 30] echo "aSeq=", repr(aSeq) proc workerThread(aSeqPar: seq[int]) = # aSeqPar is a copy of aSeq now var localSeq = aSeqPar # localSeq is a copy of aSeqPar echo "localSeq=", repr(localSeq) localSeq[1] = 40 # works echo "localSeq=", localSeq echo "aSeqPar=", repr(aSeqPar) # aSeqPar[2] = 50 # Error: 'aSeqPar[2]' cannot be assigned to Why not? echo "aSeqPar=", aSeqPar spawn workerThread(aSeq) sync() echo "aSeq=", repr(aSeq) #[ output: aSeq=0000000000196360[10, 20, 30] localSeq=0000000001F2F088[10, 20, 30] localSeq=@[10, 40, 30] aSeqPar=0000000001F2F050[10, 20, 30] aSeqPar=@[10, 20, 30] aSeq=0000000000195360[10, 20, 30] ]#