Sobes.tech
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.