Junior — Middle
Quando é recomendado usar o mecanismo RWMutex na programação para gerenciar o acesso compartilhado a recursos?
sobes.tech IA
Resposta da IA
O mecanismo RWMutex em Go é recomendado quando tem um recurso ao qual podem aceder múltiplos leitores simultaneamente, mas a escrita deve ser exclusiva. RWMutex permite que várias goroutines leiam dados ao mesmo tempo sem bloquearem umas às outras, mas bloqueia o acesso para todos durante uma escrita.
Isto melhora o desempenho em cenários com operações de leitura frequentes e operações de escrita raras.
Exemplo de uso:
var mu sync.RWMutex
var data int
func readData() int {
mu.RLock() // bloqueio para leitura
defer mu.RUnlock()
return data
}
func writeData(val int) {
mu.Lock() // bloqueio exclusivo para escrita
defer mu.Unlock()
data = val
}
Use RWMutex quando:
- A leitura ocorre frequentemente e em paralelo.
- A escrita ocorre raramente e requer acesso exclusivo.
Se as operações de leitura e escrita forem aproximadamente iguais em frequência, ou se a simplicidade for importante, é melhor usar um Mutex normal.