Junior — Middle
Ποιος είναι ο ρόλος της μεθόδου Context.Done στη διαχείριση της ολοκλήρωσης ασύγχρονων λειτουργιών;
sobes.tech AI
Απάντηση από AI
Η μέθοδος Context.Done() επιστρέφει ένα κανάλι που κλείνει όταν το πλαίσιο διακοπεί ή λήξει ο χρόνος του. Αυτό επιτρέπει στις ασύγχρονες λειτουργίες να ανιχνεύουν το σήμα ολοκλήρωσης και να διακόπτονται σωστά.
Για παράδειγμα, σε μια goroutine, μπορείτε να ακούσετε αυτό το κανάλι και να τερματίσετε την εργασία κατά την ακύρωση του πλαισίου:
ctx, cancel := context.WithCancel(context.Background())
go func() {
select {
case <-ctx.Done():
// Το πλαίσιο διακόπηκε, τερματισμός
return
case data := <-dataCh:
// Επεξεργασία δεδομένων
}
}()
// Αργότερα, καλούμε το cancel() για να σταματήσει η goroutine
cancel()
Έτσι, το Context.Done() λειτουργεί ως σήμα για ασφαλή και έγκαιρη ολοκλήρωση των ασύγχρονων λειτουργιών.