Основные примитивы:
1. sync.Mutex / sync.RWMutex — классические мьютексы
var mu sync.Mutex
mu.Lock()
defer mu.Unlock()
2. Каналы — идиоматичный способ, "share memory by communicating"
3. sync.WaitGroup — ожидание завершения группы горутин
4. sync.Once — гарантированный однократный вызов (инициализация)
5. sync.Map — конкурентно-безопасная map
6. sync/atomic — атомарные операции (счётчики, флаги)
7. context.Context — отмена и таймауты
8. sync.Cond — условные переменные (редко используются)
Правило: каналы для передачи данных и оркестрации, мьютексы для защиты shared state.