Sobes.tech
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.