Works for me...
    
    
    # nim c --threads:on -d:release --verbosity:0
    
    {.experimental.}
    
    import times
    import threadpool
    
    proc enumerableRepeat[T](value: T, n: int = -1): iterator(): T {.gcsafe.} =
      result = iterator(): T {.closure.} =
        var i = 0
        while n == -1 or i < n:
          yield value
          i += 1
    
    
    proc writeFile[T](filePath: string, iter: iterator():T) =
      var file = open(filePath, mode=fmWrite)
      for str in iter(): file.writeLine(str)
      file.close()
    
    const w = ["aaaaaaaaaa", "bbbbbbbbbb","cccccccccc"]
    
    template parallelFor(
                      slice: Slice[int],
                      f:expr
                      ) =
      const a = slice.a
      const b = slice.b
      parallel:
        for i in a..b: spawn f(i)
    
    #parallelFor(0..2) do(i: int) {.closure.}: echo w[i]
    
    parallelFor(0..2) do(i: int) {.closure.}: writeFile("dict_" & $i & 
".txt",enumerableRepeat(w[i], 3_000_000))
    

Reply via email to