Sobes.tech
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.