Junior — Middle
Care este scopul utilizării contextelor copil în sistem?
sobes.tech AI
Răspuns de la AI
În Go, contexte copil (child contexts) sunt create din contexte părinte folosind funcțiile context.WithCancel, context.WithTimeout sau context.WithDeadline. Scopul utilizării contextelor copil:
- Gestionarea duratei de viață a operațiunilor: contextul copil poate fi anulat independent de cel părinte, permițând controlul executării anumitor sarcini.
- Transmiterea semnalelor de anulare: dacă contextul părinte este anulat, toate contexte copil vor fi de asemenea anulate, asigurând finalizarea în cascadă a operațiunilor legate.
- Adăugarea de restricții: de exemplu, stabilirea unui timeout sau a unei date limită pentru contextul copil fără a modifica cel părinte.
Exemplu:
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
// ctx — context copil cu timeout de 5 secunde
go func(ctx context.Context) {
select {
case <-time.After(10 * time.Second):
fmt.Println("Operațiune finalizată")
case <-ctx.Done():
fmt.Println("Operațiune anulată sau expirat")
}
}(ctx)
// cancel() poate fi apelat pentru a anula manual contextul copil
Astfel, contexte copil permit gestionarea flexibilă a duratei de viață și anulării operațiunilor într-o ierarhie de sarcini.