ExpertiDict

Go · Avançado · Inglês · Técnico

RWMutex

/ˌɑɹ.dʌb.əl.juˈmjuː.tɛks/substantivo

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.

Veja também

Todos os termos de Go