Sobes.tech
Junior — Middle

Γιατί η λειτουργία Context.WithTimeout επιστρέφει δύο τιμές και πώς χρησιμοποιούνται στο πλαίσιο της διαχείρισης χρονικών ορίων;

sobes.tech AI

Απάντηση από AI

Η λειτουργία context.WithTimeout στο Go επιστρέφει δύο τιμές:

  1. Το νέο πλαίσιο (Context), το οποίο ακυρώνεται αυτόματα μετά το καθορισμένο χρονικό όριο.
  2. Τη λειτουργία ακύρωσης (CancelFunc), που μπορεί να καλεστεί για να τερματίσει πρόωρα την εργασία με το πλαίσιο.

Χρήση:

  • Το νέο πλαίσιο χρησιμοποιείται για τον έλεγχο του χρόνου εκτέλεσης των λειτουργιών: αν ο χρόνος λήξει, το πλαίσιο ακυρώνεται και οι σχετικές λειτουργίες λαμβάνουν σήμα ακύρωσης.
  • Η λειτουργία ακύρωσης καλείται για την απελευθέρωση πόρων που σχετίζονται με το πλαίσιο, αν η λειτουργία ολοκληρωθεί νωρίτερα από το χρονικό όριο.

Παράδειγμα:

timedCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() // διασφαλίζει την απελευθέρωση πόρων

select {
case <-doWork(timedCtx):
    fmt.Println("Η εργασία ολοκληρώθηκε")
case <-timedCtx.Done():
    fmt.Println("Χρόνος λήξης ή ακύρωση")
}

Έτσι, οι επιστρεφόμενες τιμές επιτρέπουν τον καθορισμό χρονικού ορίου και τον έλεγχο ακύρωσης λειτουργιών.