Назад к вопросам
X5 group
Junior — Middle
81
Какие события и сигналы можно использовать для взаимодействия с горутинами в языке Go?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В языке Go для взаимодействия с горутинами используются следующие основные механизмы:
- Каналы (channels) — основной способ передачи данных и сигналов между горутинами. Через каналы можно отправлять и получать значения, что позволяет синхронизировать работу.
ch := make(chan int)
go func() {
ch <- 42 // отправка значения
}()
val := <-ch // получение значения
- Контекст (context.Context) — используется для управления временем жизни горутин, отмены операций и передачи сигналов отмены.
ctx, cancel := context.WithCancel(context.Background())
go func(ctx context.Context) {
select {
case <-ctx.Done():
// обработка отмены
}
}(ctx)
cancel() // сигнал отмены
-
sync.WaitGroup — для ожидания завершения группы горутин.
-
Сигналы ОС — через пакет
os/signalможно ловить системные сигналы и передавать их горутинам для корректного завершения.
Таким образом, основными "событиями" для взаимодействия являются операции отправки/приёма по каналам, отмена через контекст и системные сигналы.