Junior — Middle
Πώς υλοποιείτε τον περιορισμό χρόνου εκτέλεσης μιας λειτουργίας με το context.WithTimeout στο Go;
sobes.tech AI
Απάντηση από AI
Στη γλώσσα Go, για τον περιορισμό του χρόνου εκτέλεσης μιας λειτουργίας, συχνά χρησιμοποιείται ένα πλαίσιο με χρονικό όριο μέσω της συνάρτησης context.WithTimeout. Αυτή επιστρέφει ένα νέο πλαίσιο και μια λειτουργία ακύρωσης. Αν η λειτουργία δεν ολοκληρωθεί πριν λήξει το χρονικό όριο, το πλαίσιο ακυρώνεται αυτόματα.
Παράδειγμα χρήσης:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case result := <-someLongRunningOperation(ctx):
fmt.Println("Ολοκλήρωση λειτουργίας:", result)
case <-ctx.Done():
fmt.Println("Παραβίαση χρονικού ορίου:", ctx.Err())
}
Εδώ, η someLongRunningOperation πρέπει να δέχεται το ctx και να ελέγχει περιοδικά το ctx.Done() για σωστή διακοπή. Αυτό επιτρέπει την ασφαλή ακύρωση της λειτουργίας σε περίπτωση υπέρβασης του χρονικού ορίου.