Junior — Middle
სისტემაში შვილობილი კონტექსტების გამოყენების მიზანია რა?
sobes.tech AI
პასუხი AI-სგან
Go dilində, uşaqlar kontekstləri (child contexts) valideyn kontekstlərindən context.WithCancel, context.WithTimeout və ya context.WithDeadline funksiyaları vasitəsilə yaradılır. Uşaqlar kontekstlərinin istifadəsinin məqsədi:
- Əməliyyatların həyat müddətinin idarə olunması: uşaqlar konteksti 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şaqlar da 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, uşaqlar konteksti üçün vaxt limiti və ya son tarix təyin etmək, valideyn kontekstini dəyişmədən.
Nümunə:
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
// ctx — uşaqlar konteksti 5 saniyəlik vaxt limiti ilə
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() uşaqlar kontekstini əl ilə ləğv etmək üçün çağırıla bilər
Beləliklə, uşaqlar 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.