Junior — Middle
Μπορείτε να εξηγήσετε πώς υλοποιείται ο συγχρονισμός με το Wait Group στο Go;
sobes.tech AI
Απάντηση από AI
Στα Go, ο συγχρονισμός με το WaitGroup υλοποιείται μέσω μιας δομής από το πακέτο sync, που επιτρέπει την αναμονή για την ολοκλήρωση μιας ομάδας goroutines.
Βασικές μέθοδοι:
Add(int)— αυξάνει τον μετρητή των αναμενόμενων goroutines.Done()— μειώνει τον μετρητή, καλείται όταν μια goroutine ολοκληρώνεται.Wait()— μπλοκάρει την εκτέλεση μέχρι ο μετρητής να γίνει μηδέν.
Παράδειγμα:
var wg sync.WaitGroup
wg.Add(2) // περιμένουμε 2 goroutines
go func() {
defer wg.Done()
// εργασία της goroutine 1
}()
go func() {
defer wg.Done()
// εργασία της goroutine 2
}()
wg.Wait() // περιμένουμε να ολοκληρωθούν και οι δύο goroutines
Έτσι, το WaitGroup επιτρέπει την αποτελεσματική συγχρονισμό πολλαπλών παράλληλων εργασιών, χωρίς να χρησιμοποιεί πολύπλοκους μηχανισμούς κλειδώματος.