Ответ
RWMutex (Read-Write Mutex) позволяет оптимизировать производительность в случаях, когда операции чтения преобладают над операциями записи.
Основные преимущества:
- Множество горутин могут одновременно читать данные (RLock/RUnlock)
- Только одна горутина может писать в любой момент времени (Lock/Unlock)
- Пока нет записи, читатели не блокируют друг друга
Пример:
var (
counter int
rwMu sync.RWMutex
)
func read() int {
rwMu.RLock()
defer rwMu.RUnlock()
return counter
}
func write(n int) {
rwMu.Lock()
defer rwMu.Unlock()
counter = n
}
Используйте RWMutex вместо обычного Mutex, когда у вас частое чтение и редкая запись - это даст прирост производительности за счет параллельного чтения.