Back to questions
Senior
12
В чём разница между Mutex и RWMutex?
Companies where asked
Алабуга
Answer from AI
sobes.tech AI
Mutex (взаимное исключение) — это простой механизм блокировки, который позволяет только одному горутину получить доступ к критической секции кода в один момент времени.
RWMutex (Read-Write Mutex) расширяет эту идею, позволяя нескольким горутинам одновременно читать данные (разрешая параллельные операции чтения), но блокируя доступ при записи. То есть:
- Несколько читателей могут держать блокировку одновременно.
- Запись возможна только при отсутствии читателей и других писателей.
Пример использования RWMutex:
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
}
Таким образом, RWMutex повышает производительность в сценариях с частыми операциями чтения и редкими записями.