Назад к вопросам
Junior — Middle
79
Каким образом горутина распознаёт, что её выполнение было отменено через контекст?
Ответ от нейросети
sobes.tech AI
Горутина в Go распознаёт отмену через контекст (context.Context) с помощью канала Done(), который закрывается при отмене.
Когда создаётся контекст с отменой (например, через context.WithCancel или context.WithTimeout), в горутине можно слушать канал ctx.Done():
ctx, cancel := context.WithCancel(context.Background())
// Запуск горутины
go func() {
select {
case <-ctx.Done():
// Контекст отменён, нужно завершить работу
fmt.Println("Горутина отменена")
return
default:
// Выполнение основной работы
}
}()
// Отмена контекста
cancel()
Таким образом, горутина узнаёт об отмене, проверяя канал Done() и может корректно завершить свою работу.