Sobes.tech
Назад к вопросам
Junior — Middle
76

Каким образом осуществляется контроль за выполнением и синхронизация горутин в программе?

Компании, где спрашивали
IDT

Ответ от нейросети

sobes.tech AI

В Go контроль за выполнением и синхронизация горутин обычно осуществляется с помощью:

  • WaitGroup из пакета sync — позволяет ждать завершения группы горутин.
  • Каналы (channels) — используются для передачи данных и сигналов между горутинами, обеспечивая синхронизацию.

Пример с WaitGroup:

var wg sync.WaitGroup
wg.Add(1)
go func() {
    defer wg.Done()
    // работа горутины
}()
wg.Wait() // ждем завершения горутины

Каналы позволяют, например, передавать результаты или сигналы завершения:

ch := make(chan int)
go func() {
    ch <- 42 // отправка значения
}()
value := <-ch // получение значения, синхронизирует горутины

Таким образом, WaitGroup и каналы — основные инструменты для контроля и синхронизации горутин.