Go · Intermediário · Inglês · Técnico
worker pool
Padrão com um número fixo de goroutines que consomem tarefas de um mesmo channel. Limita a concorrência e reaproveita as goroutines em vez de criar uma por tarefa.
Onde usar
Usado para processar milhares de itens sem estourar memória, banco ou limite de conexões. O tamanho do pool é o controle de pressão do sistema.
Em código
jobs := make(chan int)
for range 3 { // 3 workers
go func() {
for j := range jobs { process(j) }
}()
}
jobs <- 1
close(jobs)Exemplos
We use a worker pool of ten to call the API.
Usamos um worker pool de dez para chamar a API.
The pool size limits how many jobs run at once.
O tamanho do pool limita quantos jobs rodam ao mesmo tempo.
Cuidado
Mais workers nem sempre significa mais velocidade; se o gargalo é o banco ou a CPU, o excesso só aumenta a disputa.
Sinônimos
pool de workers