Go · Avançado · Inglês · Técnico
sync.Pool
Cache de objetos temporários reutilizáveis do pacote sync. Get pega um objeto ou cria um novo e Put o devolve, reduzindo alocações e trabalho do garbage collector.
Onde usar
Usado em caminhos quentes, como buffers de serialização em servidores de alta carga. O GC pode descartar qualquer item a qualquer momento, então ele não serve como cache confiável.
Em código
var pool = sync.Pool{
New: func() any { return &bytes.Buffer{} },
}
func render() {
b := pool.Get().(*bytes.Buffer)
defer pool.Put(b)
b.Reset()
}Exemplos
We keep a sync.Pool of buffers to cut allocations.
Mantemos um sync.Pool de buffers para cortar alocações.
Reset the buffer before you Put it back into the pool.
Zere o buffer antes de devolvê-lo ao pool com Put.
Cuidado
Não guarde estado importante nem conexões no Pool; zere o objeto antes de devolver, porque o próximo Get recebe o conteúdo anterior.
Sinônimos
pool de objetos