Junior — Middle
Πώς πραγματοποιείται ο έλεγχος και ο συγχρονισμός των goroutines στο πρόγραμμα;
sobes.tech AI
Απάντηση από AI
Στην Go, ο έλεγχος εκτέλεσης και η συγχρονισμός των goroutines πραγματοποιούνται συνήθως με:
- WaitGroup από το πακέτο
sync— επιτρέπει το να περιμένουμε την ολοκλήρωση μιας ομάδας goroutines. - Κανάλια (channels) — χρησιμοποιούνται για τη μεταφορά δεδομένων και σημάτων μεταξύ goroutines, διασφαλίζοντας τον συγχρονισμό.
Παράδειγμα με WaitGroup:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// εργασία της goroutine
}()
wg.Wait() // περιμένουμε την ολοκλήρωση της goroutine
Τα κανάλια επιτρέπουν, για παράδειγμα, τη μεταφορά αποτελεσμάτων ή σημάτων ολοκλήρωσης:
ch := make(chan int)
go func() {
ch <- 42 // αποστολή τιμής
}()
τιμή := <-ch // λήψη τιμής, συγχρονίζει τις goroutines
Έτσι, το WaitGroup και τα κανάλια είναι τα βασικά εργαλεία για τον έλεγχο και το συγχρονισμό των goroutines.