Junior — Middle
Sistemdə uşaq kontekstlərinin istifadəsinin məqsədi nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində, uşaq kontekstləri (child contexts) valideyn kontekstlərindən context.WithCancel, context.WithTimeout və ya context.WithDeadline funksiyaları vasitəsilə yaradılır. Uşaq kontekstlərinin istifadəsinin məqsədi:
- Əməliyyatların həyat müddətinin idarə olunması: uşaq konteksti valideynindən müstəqil şəkildə ləğv oluna bilər, bu da müəyyən tapşırıqların icrasını nəzarətdə saxlamağa imkan verir.
- Ləğv siqnallarının ötürülməsi: əgər valideyn konteksti ləğv olunarsa, bütün uşaq kontekstləri də ləğv olunur, bu da əlaqəli əməliyyatların zəncirvari şəkildə tamamlanmasını təmin edir.
- Məhdudiyyətlərin əlavə olunması: məsələn, valideyn kontekstini dəyişmədən uşaq konteksti üçün vaxt limiti və ya son tarix təyin etmək.
Nümunə:
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
// ctx — 5 saniyəlik vaxt limiti olan uşaq konteksti
go func(ctx context.Context) {
select {
case <-time.After(10 * time.Second):
fmt.Println("Əməliyyat tamamlandı")
case <-ctx.Done():
fmt.Println("Əməliyyat ləğv olundu və ya vaxt keçdi")
}
}(ctx)
// cancel() çağırılaraq uşaq konteksti əl ilə ləğv oluna bilər
Bu şəkildə, uşaq kontekstləri tapşırıqların hiyerarşisində əməliyyatların həyat müddətini və ləğv edilməsini elastik şəkildə idarə etməyə imkan verir.