ExpertiDict

Go · Avançado · Inglês · Técnico

sync.Pool

/sɪŋk puːl/substantivo

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

Veja também

Todos os termos de Go