Junior — Middle
Hogyan ismeri fel egy goroutine, hogy a végrehajtását a kontextus törölte?
sobes.tech MI
Válasz az MI-től
Горутина в 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() и может корректно завершить свою работу.