Sobes.tech
Junior — Middle

Jaka jest rola metody Context.Done w zarządzaniu kończeniem operacji asynchronicznych?

sobes.tech AI

Odpowiedź od AI

Metoda Context.Done() zwraca kana, które jest zamykane, gdy kontekst zostanie anulowany lub wygaśnie jego czas działania. Pozwala to operacjom asynchronicznym na wykrycie sygnału zakończenia i poprawne przerwanie.

Na przykład, w goroutine można nasłuchiwać tego kanału i kończyć pracę po anulowaniu kontekstu:

ctx, cancel := context.WithCancel(context.Background())
go func() {
    select {
    case <-ctx.Done():
        // Kontekst został anulowany, kończymy
        return
    case data := <-dataCh:
        // Przetwarzanie danych
    }
}()

// Później wywołujemy cancel(), aby zatrzymać goroutine
cancel()

W ten sposób Context.Done() służy jako sygnał do bezpiecznego i terminowego zakończenia operacji asynchronicznych.