Sobes.tech
Junior — Middle

Podes explicar o que é uma exclusão mútua (Mutex) e como ela funciona?

sobes.tech IA

Resposta da IA

Mutual exclusion (Mutex) é um mecanismo de sincronização que garante que, num dado momento, apenas uma goroutine (thread) pode aceder a um recurso ou secção crítica de código.

Em Go, utiliza-se o tipo sync.Mutex para isso. Quando uma goroutine chama Lock(), ela bloqueia o mutex, e outras goroutines que tentarem chamar Lock() irão esperar até que o mutex seja desbloqueado com Unlock().

Exemplo:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()
    defer mu.Unlock()
    counter++
}

Neste exemplo, increment aumenta de forma segura o valor de counter, prevenindo acessos simultâneos de várias goroutines.