Назад к вопросам
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 и каналы — основные инструменты для контроля и синхронизации горутин.