Sobes.tech
Junior — Middle

Qual é a finalidade do tipo de sincronização RWMutex na linguagem de programação?

sobes.tech IA

Resposta da IA

Na linguagem Go, o tipo RWMutex (Mutex de Leitura-Gravação) é utilizado para sincronizar o acesso a recursos partilhados, permitindo que várias goroutines leiam dados simultaneamente, mas bloqueando a escrita enquanto há leitura em curso, e vice-versa.

O principal objetivo do RWMutex é melhorar o desempenho em cenários onde as operações de leitura são muito mais frequentes do que as de escrita. Ele fornece dois tipos de bloqueios:

  • RLock() — bloqueio para leitura, permite que múltiplos leitores acessem simultaneamente.
  • Lock() — bloqueio para escrita, acesso exclusivo.

Exemplo de uso:

var mu sync.RWMutex
var data int

func readData() int {
    mu.RLock()
    defer mu.RUnlock()
    return data
}

func writeData(val int) {
    mu.Lock()
    defer mu.Unlock()
    data = val
}

Assim, o RWMutex ajuda a gerir de forma eficiente o acesso concorrente, minimizando bloqueios em cenários de leituras frequentes.