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.