Вопрос: Чем mutex отличается от канала и когда что выбирать?

Go Junior Без компании
Вопрос: Чем mutex отличается от канала и когда что выбирать?
Ответы
Mutex защищает критическую секцию (shared memory). Каналы — коммуникация и синхронизация (communicating sequential processes). Mutex пример: ```go package main import ( "fmt" "sync" ) func main() { var ( mu sync.Mutex x int wg sync.WaitGroup ) for i := 0; i < 100; i++ { wg.Add(1) go func() { defer wg.Done() mu.Lock() x++ mu.Unlock() }() } wg.Wait() fmt.Println(x) } ``` Каналы чаще для пайплайнов/сигналов/очередей задач; mutex — когда нужно быстро защитить общий ресурс.