Sobes.tech
Назад к вопросам
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 — обеспечивает безопасный доступ к разделяемым данным.