Sobes.tech
Junior — Middle

Como é que o mecanismo de exclusão mútua é implementado usando Mutex na linguagem Go?

sobes.tech IA

Resposta da IA

Na linguagem Go, para implementar exclusão mútua (mutex), utiliza-se o tipo sync.Mutex. Ele permite proteger as secções críticas do código contra acessos simultâneos de várias goroutines, prevenindo condições de corrida.

Operações principais:

  • Lock() — bloqueia o mutex, impedindo que outras goroutines acessem.
  • Unlock() — desbloqueia o mutex, permitindo que outras goroutines continuem.

Exemplo de uso:

package main

import (
    "fmt"
    "sync"
)

func main() {
    var mu sync.Mutex
    counter := 0

    mu.Lock() // Bloqueia o mutex
    counter++
    fmt.Println("Contador:", counter)
    mu.Unlock() // Desbloqueia o mutex
}

Em ambientes multithread, o mutex garante que apenas uma goroutine execute o código entre Lock() e Unlock() de cada vez, prevenindo alterações incorretas em dados partilhados.