Back to questions
OZON
Junior — Middle
80
Объясните, что такоеRead-Write блокировка (RWMutex) и как она используется для управления доступом к данным?
Companies where asked
Answer from AI
sobes.tech AI
Read-Write блокировка (RWMutex) в Go — это механизм синхронизации, который позволяет нескольким горутинам одновременно читать данные, но при этом гарантирует эксклюзивный доступ при записи.
- RLock() / RUnlock() — блокировка для чтения. Несколько горутин могут одновременно держать такую блокировку.
- Lock() / Unlock() — блокировка для записи. Только одна горутина может держать её, и при этом никакие чтения не разрешены.
Это повышает производительность, когда операций чтения много, а записи редки.
Пример использования:
var rwMutex sync.RWMutex
var data int
func readData() int {
rwMutex.RLock()
defer rwMutex.RUnlock()
return data
}
func writeData(val int) {
rwMutex.Lock()
defer rwMutex.Unlock()
data = val
}
В этом примере несколько горутин могут одновременно вызывать readData(), но если вызывается writeData(), она блокирует все чтения и записи до завершения.