Go · Avançado · Inglês · Técnico
RWMutex
Mutex do pacote sync que permite vários leitores simultâneos com RLock, mas só um escritor por vez com Lock. Escrever bloqueia todos os leitores.
Onde usar
Vale a pena quando há muito mais leituras do que escritas sobre a mesma estrutura, como um cache. Em cargas equilibradas, um Mutex simples pode ser mais rápido.
Em código
var mu sync.RWMutex
var cache = map[string]int{}
func get(k string) int {
mu.RLock()
defer mu.RUnlock()
return cache[k]
}Exemplos
Switch to an RWMutex because reads far outnumber writes.
Mude para um RWMutex porque as leituras superam muito as escritas.
Many readers can hold the RLock at the same time.
Vários leitores podem segurar o RLock ao mesmo tempo.
Cuidado
Não tente subir de RLock para Lock na mesma goroutine: isso trava; solte a leitura antes de pedir a escrita.
Sinônimos
mutex de leitura e escrita
Origem
Sigla de read-write mutex.