Sobes.tech
Junior

Que outros métodos de sincronização de goroutines existem em Go além dos canais?

sobes.tech IA

Resposta da IA

Para além dos canais, em Go, para sincronizar goroutines, pode usar:

  • sync.WaitGroup — permite esperar que um grupo de goroutines termine.
  • sync.Mutex — mutex para proteger recursos partilhados contra acessos simultâneos.
  • sync.RWMutex — mutex com separação entre leitura e escrita.
  • sync.Cond — variável condicional para notificar as goroutines sobre a ocorrência de um evento.
  • operações atómicas do pacote sync/atomic — para operações atómicas com variáveis sem bloqueios.

Exemplo de uso do WaitGroup:

var wg sync.WaitGroup
wg.Add(1)
go func() {
    defer wg.Done()
    // trabalho da goroutine
}()
wg.Wait() // espera que todas as goroutines terminem