Sobes.tech
Junior — Middle

Ako gorutina zistí, že jej bol odoslaný signál o ukončení cez kontext?

sobes.tech AI

Odpoveď od AI

Gorutina dostáva signál o ukončení prostredníctvom kontextu pomocou kanála, ktorý poskytuje objekt context.Context. Zvyčajne sa používa metóda Done(), ktorá vracia kanál, ktorý sa zatvorí pri zrušení kontextu. Gorutina môže počúvať tento kanál v slučke alebo select a reagovať na jeho zatvorenie, čo znamená signál o ukončení alebo zrušení operácie.

Príklad:

ctx, cancel := context.WithCancel(context.Background())

go func() {
    select {
    case <-ctx.Done():
        // Kontext bol zrušený, ukončujeme
        fmt.Println("Gorutina ukončená")
        return
    // iné prípady
    }
}()

// neskôr voláme cancel() na signalizáciu ukončenia
cancel()