Junior — Middle
Como garantir a coordenação da execução de várias operações para evitar conflitos e erros?
sobes.tech IA
Resposta da IA
Para coordenar a execução de várias operações e evitar conflitos e erros em Go, geralmente utilizam-se as seguintes abordagens:
- Mutexes (sync.Mutex) — para proteger recursos partilhados contra acessos simultâneos.
var mu sync.Mutex
mu.Lock()
// secção crítica
mu.Unlock()
- Canais (channels) — para sincronizar e transferir dados entre goroutines, ajudando a evitar condições de corrida.
ch := make(chan int)
go func() {
ch <- 42 // envio de dados
}()
valor := <-ch // receção de dados
- WaitGroup — para aguardar que um grupo de goroutines termine.
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// trabalho
}()
wg.Wait()
- Contextos (context.Context) — para gerir o tempo de vida das operações e cancelá-las.
Estas ferramentas permitem organizar a execução segura e previsível de operações paralelas, minimizando os riscos de conflitos e erros.