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()