🟡 Средний · 2 очк. Каналы
Когда лучше использовать мьютекс вместо каналов?
A Всегда мьютекс
B Для защиты shared state (кеш, счётчик)
C Каналы всегда лучше
D Нет разницы
Объяснение вопроса

Мьютекс удобен для защиты разделяемого состояния (общий map, счётчик, буфер): проще и часто производительнее. Каналы лучше подходят для координации горутин и передачи данных (pipeline, fan-out, сигналы отмены).

Мьютекс - shared state

var mu sync.Mutex
var cache map[string]string
func Get(k string) string {
    mu.Lock()
    defer mu.Unlock()
    return cache[k]
}

Каналы - координация и поток данных

jobs := make(chan int, 100)
go producer(jobs)
go worker(jobs)
// или: выборка из нескольких каналов, таймауты, отмена

Девиз "share memory by communicating" не запрещает мьютексы - он про то, что каналы часто делают программу понятнее. Для простого кеша или счётчика мьютекс идиоматичен.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.