sync.RWMutex отличается от sync.Mutex?RWMutex разделяет блокировки на чтение (RLock/RUnlock) и запись (Lock/Unlock). Несколько горутин могут одновременно держать RLock; Lock эксклюзивен.
Когда чтений больше записей, RWMutex эффективнее обычного Mutex - читатели не блокируют друг друга.
var mu sync.RWMutex
func Read() {
mu.RLock()
defer mu.RUnlock()
// читаем
}
func Write() {
mu.Lock()
defer mu.Unlock()
// пишем
}