Sobes.tech
Junior — Middle

Kaip gorutina sužino, kad jai perduotas pabaigos signalas per kontekstą?

sobes.tech AI

Atsakymas iš AI

Gorutina gauna signalo apie užbaigimą per kontekstą naudodama kanalą, kuris teikia context.Context objektą. Paprastai naudojama Done() metodas, kuris grąžina kanalą, užsidarantį, kai kontekstas atšaukiamas. Gorutina gali klausytis šio kanalo cikle arba select ir reaguoti į jo uždarymą, kas reiškia operacijos užbaigimo arba atšaukimo signalą.

Pavyzdys:

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

go func() {
    select {
    case <-ctx.Done():
        // Kontekstas atšauktas, užbaigiame
        fmt.Println("Gorutina baigta")
        return
    // kiti atvejai
    }
}()

// vėliau kviečiame cancel() signalizuoti apie užbaigimą
cancel()