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

Какие события и сигналы можно использовать для взаимодействия с горутинами в языке Go?

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

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

sobes.tech AI

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

  1. Каналы (channels) — основной способ передачи данных и сигналов между горутинами. Через каналы можно отправлять и получать значения, что позволяет синхронизировать работу.
ch := make(chan int)
go func() {
    ch <- 42 // отправка значения
}()
val := <-ch // получение значения
  1. Контекст (context.Context) — используется для управления временем жизни горутин, отмены операций и передачи сигналов отмены.
ctx, cancel := context.WithCancel(context.Background())
go func(ctx context.Context) {
    select {
    case <-ctx.Done():
        // обработка отмены
    }
}(ctx)
cancel() // сигнал отмены
  1. sync.WaitGroup — для ожидания завершения группы горутин.

  2. Сигналы ОС — через пакет os/signal можно ловить системные сигналы и передавать их горутинам для корректного завершения.

Таким образом, основными "событиями" для взаимодействия являются операции отправки/приёма по каналам, отмена через контекст и системные сигналы.