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