Sobes.tech
Junior — Middle

Sistemde alt bağlamların kullanılmasının amacı nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde, çocuk bağlamlar (child contexts), context.WithCancel, context.WithTimeout veya context.WithDeadline fonksiyonları kullanılarak ebeveyn bağlamlardan oluşturulur. Çocuk bağlamların kullanılmasının amacı:

  • İşlemlerin yaşam süresinin yönetimi: çocuk bağlam, ebeveynden bağımsız olarak iptal edilebilir, bu da belirli görevlerin yürütülmesini kontrol etmeye olanak tanır.
  • İptal sinyallerinin iletimi: ebeveyn bağlam iptal edilirse, tüm çocuk bağlamlar da iptal edilir, bu da ilişkili işlemlerin zincirleme sonlandırılmasını sağlar.
  • Kısıtlamaların eklenmesi: örneğin, ebeveyn bağlamı değiştirmeden çocuk bağlam için zaman aşımı veya son tarih belirleme.

Örnek:

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
// ctx — 5 saniyelik zaman aşımı olan çocuk bağlam

go func(ctx context.Context) {
    select {
    case <-time.After(10 * time.Second):
        fmt.Println("İşlem tamamlandı")
    case <-ctx.Done():
        fmt.Println("İşlem iptal edildi veya zaman aşımına uğradı")
    }
}(ctx)

// cancel() çağrılarak çocuk bağlam manuel olarak iptal edilebilir

Bu şekilde, çocuk bağlamlar, görevler hiyerarşisinde işlemlerin yaşam süresi ve iptalini esnek biçimde yönetmeye olanak tanır.