In this worker pool, the program deadlocks. What is the root cause?
jobs := make(chan int, 100)
results := make(chan int, 10)
var wg sync.WaitGroup
for w := 0; w < 3; w++ {
wg.Add(1)
go func() {
defer wg.Done()
for j := range jobs {
results <- j * 2
}
}()
}
for i := 0; i < 50; i++ { jobs <- i }
close(jobs)
wg.Wait()
for r := range results { _ = r }