Sobes.tech
Назад к вопросам
Junior — Middle
77

Какова роль метода Context.Done в управлении завершением асинхронных операций?

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

sobes.tech AI

Метод Context.Done() возвращает канал, который закрывается, когда контекст отменяется или истекает время его действия. Это позволяет асинхронным операциям отслеживать сигнал завершения и корректно прерываться.

Например, в горутине можно слушать этот канал и завершать работу при отмене контекста:

ctx, cancel := context.WithCancel(context.Background())
go func() {
    select {
    case <-ctx.Done():
        // Контекст отменён, завершаем работу
        return
    case data := <-dataCh:
        // Обработка данных
    }
}()

// Позже вызываем cancel(), чтобы остановить горутину
cancel()

Таким образом, Context.Done() служит сигналом для безопасного и своевременного завершения асинхронных операций.