Конкурентность ≠ Параллелизм
Конкурентность — это структура программы. Параллелизм — это одновременное выполнение.
Worker Pool
func workerPool(jobs <-chan Job, results chan<- Result, workers int) {
var wg sync.WaitGroup
for i := 0; i < workers; i++ {
wg.Add(1)
go func() {
defer wg.Done()
for job := range jobs {
results <- process(job)
}
}()
}
wg.Wait()
close(results)
}
Context Cancellation
Всегда передавайте context.Context. Всегда проверяйте ctx.Done(). Без этого горутины будут утекать.