Sobes.tech
Назад к вопросам
Senior
3

Как работает context.WithCancel с отменой?

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

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

sobes.tech AI

context.WithCancel в Go создаёт новый контекст, который можно отменить вручную. Он возвращает два значения: новый контекст и функцию отмены cancel(). Когда вызывается cancel(), все операции, которые слушают этот контекст (например, через <-ctx.Done()), получают сигнал отмены и могут корректно завершить работу.

Пример использования:

ctx, cancel := context.WithCancel(context.Background())

// Запускаем горутину, которая слушает отмену
go func() {
    <-ctx.Done() // ждем сигнал отмены
    fmt.Println("Отмена получена, завершаем работу")
}()

// Через некоторое время отменяем контекст
cancel()

Таким образом, WithCancel позволяет координировать отмену операций и освобождение ресурсов, особенно полезно для управления жизненным циклом горутин.