import weave proc sumReduce(n: int): int = let res = result.addr # For mutation we need to capture the address. parallelForStaged i in 0 .. n: awaitable: MyLoop captures: {res} prologue: var localSum = 0 loop: localSum += i echo getThreadID(Weave)," -> ",i epilogue: echo "Thread ", getThreadID(Weave), ": localsum = ", localSum res[].atomicInc(localSum) sync(MyLoop) # broken # discard sync(MyLoop) # OK init(Weave) let sum1H = sumReduce(100) exit(Weave) echo sum1H