Junior — Middle
Γιατί η λειτουργία Context.WithTimeout επιστρέφει δύο τιμές και πώς χρησιμοποιούνται στο πλαίσιο της διαχείρισης χρονικών ορίων;
sobes.tech AI
Απάντηση από AI
Η λειτουργία context.WithTimeout στο Go επιστρέφει δύο τιμές:
- Το νέο πλαίσιο (
Context), το οποίο ακυρώνεται αυτόματα μετά το καθορισμένο χρονικό όριο. - Τη λειτουργία ακύρωσης (
CancelFunc), που μπορεί να καλεστεί για να τερματίσει πρόωρα την εργασία με το πλαίσιο.
Χρήση:
- Το νέο πλαίσιο χρησιμοποιείται για τον έλεγχο του χρόνου εκτέλεσης των λειτουργιών: αν ο χρόνος λήξει, το πλαίσιο ακυρώνεται και οι σχετικές λειτουργίες λαμβάνουν σήμα ακύρωσης.
- Η λειτουργία ακύρωσης καλείται για την απελευθέρωση πόρων που σχετίζονται με το πλαίσιο, αν η λειτουργία ολοκληρωθεί νωρίτερα από το χρονικό όριο.
Παράδειγμα:
timedCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() // διασφαλίζει την απελευθέρωση πόρων
select {
case <-doWork(timedCtx):
fmt.Println("Η εργασία ολοκληρώθηκε")
case <-timedCtx.Done():
fmt.Println("Χρόνος λήξης ή ακύρωση")
}
Έτσι, οι επιστρεφόμενες τιμές επιτρέπουν τον καθορισμό χρονικού ορίου και τον έλεγχο ακύρωσης λειτουργιών.