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()