Junior — Middle
Qual é o papel das primitivas de sincronização na linguagem de programação Go?
sobes.tech IA
Resposta da IA
As primitivas de sincronização em Go são usadas para gerir o acesso a recursos partilhados e coordenar a execução de goroutines, para evitar condições de corrida e garantir a correção do programa.
Primitivas principais:
- Mutex (sync.Mutex) — garante exclusão mútua, permitindo que apenas uma goroutine execute a secção crítica de cada vez.
- WaitGroup (sync.WaitGroup) — permite esperar que um grupo de goroutines termine.
- Canal — canal para transmissão de dados entre goroutines, que é por si só uma poderosa primitiva de sincronização.
- RWMutex (sync.RWMutex) — permite que várias goroutines leiam dados simultaneamente, mas a escrita bloqueia todas.
Exemplo de uso de Mutex:
var mu sync.Mutex
var contador int
func incrementar() {
mu.Lock()
defer mu.Unlock()
contador++
}
Assim, as primitivas de sincronização ajudam a evitar conflitos no acesso paralelo aos dados e garantem uma interação correta entre as goroutines.