Sobes.tech
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() λειτουργεί ως σήμα για ασφαλή και έγκαιρη ολοκλήρωση των ασύγχρονων λειτουργιών.