Назад к вопросам
Senior
4
Расскажи про WaitGroup и Mutex — как используются и для чего нужны?
Компании, где спрашивали
Себе
Ответ от нейросети
sobes.tech AI
WaitGroup и Mutex — это инструменты синхронизации в Go для работы с конкурентностью.
- WaitGroup используется для ожидания завершения группы горутин. Позволяет главной горутине ждать, пока все запущенные горутины закончат работу.
Пример использования WaitGroup:
var wg sync.WaitGroup
wg.Add(3) // ожидаем 3 горутины
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // сигнализируем о завершении
fmt.Println("Горутина", id)
}(i)
}
wg.Wait() // ждем завершения всех
- Mutex (мьютекс) используется для защиты общих ресурсов от одновременного доступа, предотвращая гонки данных.
Пример использования Mutex:
var mu sync.Mutex
counter := 0
mu.Lock()
counter++
mu.Unlock()
Таким образом, WaitGroup помогает координировать завершение горутин, а Mutex — обеспечивает безопасный доступ к разделяемым данным.