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