Junior — Middle
Que tipos de exclusões mútuas (Mutex) estão implementados na biblioteca padrão do Go?
sobes.tech IA
Resposta da IA
Na biblioteca padrão do Go, é implementado um tipo principal de exclusão mútua: sync.Mutex. É um mutex simples que garante bloqueio e desbloqueio para proteger seções críticas do código contra acessos simultâneos.
Além disso, existe o sync.RWMutex, uma versão estendida do mutex que permite a vários leitores manterem o bloqueio simultaneamente, mas a escrita é bloqueada de forma exclusiva.
Exemplo de uso de sync.Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
E um exemplo com sync.RWMutex:
var rwMu sync.RWMutex
var data int
func readData() int {
rwMu.RLock()
defer rwMu.RUnlock()
return data
}
func writeData(val int) {
rwMu.Lock()
defer rwMu.Unlock()
data = val
}