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()