Sobes.tech
Junior — Middle

Goroutine necə başa düşür ki, ona bağlam vasitəsilə tamamlanma siqnalı göndərilib?

sobes.tech Süni İntellekt

AI-dan cavab

Gorutina bağlam vasitəsilə kanal vasitəsilə tamamlanma siqnalı alır, bu da context.Context obyektini təmin edir. Adətən, Done() metodundan istifadə olunur, bu da kontekst ləğv olunduqda bağlanan kanal qaytarır. Gorutina bu kanalı dövr və ya select daxilində dinləyə bilər və onun bağlanmasına reaksiya verə bilər, bu da əməliyyatın tamamlanması və ya ləğv edilməsi siqnalıdır.

Nümunə:

ctx, cancel := context.WithCancel(context.Background())

go func() {
    select {
    case <-ctx.Done():
        // Kontekst ləğv olundu, tamamlayırıq
        fmt.Println("Gorutina tamamlandı")
        return
    // digər hallar
    }
}()

// daha sonra, tamamlamanı siqnallamaq üçün cancel() çağırırıq
cancel()