Sobes.tech
Назад к вопросам
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() и может корректно завершить свою работу.