Sobes.tech
Junior — Middle

Πώς καταλαβαίνει η goroutine ότι της έχει σταλεί σήμα ολοκλήρωσης μέσω του context;

sobes.tech AI

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

Η goroutine λαμβάνει το σήμα ολοκλήρωσης μέσω ενός context χρησιμοποιώντας ένα κανάλι, το οποίο παρέχει το αντικείμενο context.Context. Συνήθως χρησιμοποιείται η μέθοδος Done(), η οποία επιστρέφει ένα κανάλι που κλείνει όταν το context ακυρώνεται. Η goroutine μπορεί να ακούει αυτό το κανάλι σε έναν βρόχο ή select και να αντιδρά στο κλείσιμό του, που σημαίνει σήμα ολοκλήρωσης ή ακύρωσης της λειτουργίας.

Παράδειγμα:

ctx, cancel := context.WithCancel(context.Background())

go func() {
    select {
    case <-ctx.Done():
        // Το context ακυρώθηκε, τερματισμός
        fmt.Println("Η goroutine ολοκληρώθηκε")
        return
    // άλλες περιπτώσεις
    }
}()

// αργότερα, καλούμε το cancel() για να σηματοδοτήσουμε το τέλος
cancel()