Sobes.tech
Back to questions
Junior — Middle
80

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

Answer from AI

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() служит сигналом для безопасного и своевременного завершения асинхронных операций.