Ответ
Mutex (взаимное исключение) обеспечивает эксклюзивный доступ к ресурсу — только одна горутина может захватить блокировку для чтения или записи.
RWMutex (read-write mutex) разделяет доступ:
- Множество горутин могут читать (
RLock()), если нет блокировки на запись. - Только одна горутина может писать (
Lock()), блокируя все остальные операции.
Пример:
var (
mu sync.Mutex
rw sync.RWMutex
data int
)
// Mutex (любая операция блокирует)
mu.Lock()
data = 42 // запись
mu.Unlock()
// RWMutex (оптимизация для частого чтения)
rw.RLock()
_ = data // чтение (много горутин)
rw.RUnlock()
rw.Lock()
data = 100 // запись (эксклюзивно)
rw.Unlock()
Когда использовать:
Mutex— если операции записи частые или критическая секция небольшая.RWMutex— если чтение происходит значительно чаще записи (например, кэш).
Видео-ответы
▶
Открытое интервью на Middle Go-разработчика
▶
Открытое интервью на Middle Go разработчика
▶
Открытое интервью на Go-разработчика
▶
Моковое собеседование на Middle Golang разработчика | Solvery & Uproger
▶
Golang живое собеседование Middle Go разработчика!
▶
НАВАЛИВАЮ КРИНЖА НА СОБЕСЕ В MTS DIGITAL GOLANG BACKEND
▶
Открытое интервью на Middle Go-разработчика
▶
Открытое собеседование на Go-разработчика | Навыки
▶
Mock-собеседование со студентом курса Golang // Демо-занятие курса «Golang Developer. Professional»