Junior — Middle
Jaki jest cel używania kontekstów podrzędnych w systemie?
sobes.tech AI
Odpowiedź od AI
W języku Go konteksty potomne (child contexts) są tworzone z kontekstów nadrzędnych za pomocą funkcji context.WithCancel, context.WithTimeout lub context.WithDeadline. Cel używania kontekstów potomnych:
- Zarządzanie czasem życia operacji: kontekst potomny może być odwołany niezależnie od nadrzędnego, co pozwala kontrolować wykonanie konkretnych zadań.
- Przekazywanie sygnałów anulowania: jeśli kontekst nadrzędny zostanie anulowany, wszystkie konteksty potomne również zostaną, zapewniając kaskadowe zakończenie powiązanych operacji.
- Dodanie ograniczeń: na przykład ustawienie limitu czasu lub terminu dla kontekstu potomnego bez zmiany nadrzędnego.
Przykład:
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
// ctx — kontekst potomny z limitem czasu 5 sekund
go func(ctx context.Context) {
select {
case <-time.After(10 * time.Second):
fmt.Println("Operacja zakończona")
case <-ctx.Done():
fmt.Println("Operacja anulowana lub przekroczony limit czasu")
}
}(ctx)
// cancel() można wywołać, aby ręcznie anulować kontekst potomny
W ten sposób konteksty potomne pozwalają elastycznie zarządzać czasem życia i anulowaniem operacji w hierarchii zadań.