diff --git a/utils.go b/utils.go index f650c05..97cfec1 100644 --- a/utils.go +++ b/utils.go @@ -32,11 +32,16 @@ func parallel(start, stop int, fn func(<-chan int)) { procs = count } - c := make(chan int, count) - for i := start; i < stop; i++ { - c <- i - } - close(c) + c := make(chan int) + done := make(chan struct{}) + + go func(c chan<- int) { + defer close(done) + for i := start; i < stop; i++ { + c <- i + } + close(c) + }(c) var wg sync.WaitGroup for i := 0; i < procs; i++ { @@ -46,6 +51,8 @@ func parallel(start, stop int, fn func(<-chan int)) { fn(c) }() } + + <-done wg.Wait() }