Back to questions
VK
Middle
4
Как работает sync.RWMutex и когда его использовать?
Companies where asked
Answer from AI
sobes.tech AI
sync.RWMutex в Go — это разновидность мьютекса, который позволяет нескольким горутинам одновременно читать данные (RLock), но блокирует запись (Lock) до тех пор, пока все читатели не отпустят блокировку.
Когда использовать:
- Если у вас есть данные, которые часто читаются и редко изменяются.
- Чтобы повысить производительность, позволяя параллельные чтения, но исключая одновременную запись.
Пример:
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
}
Таким образом, несколько вызовов readData могут выполняться одновременно, но writeData будет ждать, пока все чтения завершатся, и блокировать новые чтения, пока не завершится запись.