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]
    ]#
    

Reply via email to