Sobes.tech
Junior — Middle

Ako určiť, kto inicioval zrušenie aktuálneho kontextu?

sobes.tech AI

Odpoveď od AI

V Go nie je možné priamo určiť, kto inicioval zrušenie aktuálneho kontextu, pretože kontext neukladá informácie o iniciátorovi zrušenia.

Avšak, je možné:

  • Použiť rôzne kontexty s rôznymi zdrojmi zrušenia (napríklad context.WithCancel, context.WithTimeout, context.WithDeadline) na pochopenie dôvodu zrušenia podľa typu kontextu.
  • Prenášať dodatočné informácie cez kontext pomocou context.WithValue, aby bolo možné identifikovať iniciátora.

Príklad kontroly dôvodu zrušenia:

select {
case <-ctx.Done():
    err := ctx.Err()
    if err == context.Canceled {
        fmt.Println("Ručné zrušenie")
    } else if err == context.DeadlineExceeded {
        fmt.Println("Vypršal čas")
    }
}

Pre presné určenie iniciátora zrušenia je potrebné implementovať vlastný mechanizmus prenosu týchto informácií.