Назад к вопросам
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 позволяет координировать отмену операций и освобождение ресурсов, особенно полезно для управления жизненным циклом горутин.