ExpertiDict

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

sync.Once

/sɪŋk wʌns/substantivo

Tipo do pacote sync cujo método Do executa uma função exatamente uma vez, mesmo com chamadas concorrentes. As demais chamadas esperam a primeira terminar.

Onde usar

Ideal para inicialização preguiçosa e segura entre goroutines, como abrir uma conexão compartilhada ou carregar configuração na primeira necessidade.

Em código

var once sync.Once
var cfg *Config

func Get() *Config {
  once.Do(func() { cfg = load() })
  return cfg
}

Exemplos

We load the config once with sync.Once.

Carregamos a configuração uma vez com sync.Once.

Other goroutines wait until the first call to Do returns.

As outras goroutines esperam até a primeira chamada a Do retornar.

Cuidado

Se a função passada a Do der panic, a Once considera a execução concluída e não tenta de novo.

Sinônimos

inicialização única

Veja também

Todos os termos de Go