Senior
Γιατί χρειαζόμαστε το WaitGroup σε αυτήν την εργασία;
sobes.tech AI
Απάντηση από AI
Το WaitGroup στο Go χρησιμοποιείται για συγχρονισμό των goroutines. Σε εργασίες όπου ξεκινούν πολλαπλές goroutines, το WaitGroup επιτρέπει στο κύριο νήμα να περιμένει την ολοκλήρωση όλων των ξεκινήμένων goroutines προτού συνεχίσει την εκτέλεση. Αυτό αποτρέπει την πρόωρη έξοδο από το πρόγραμμα ή τη μετάβαση στο επόμενο στάδιο όταν οι εργασίες υπόβαθρου δεν έχουν ακόμη ολοκληρωθεί.
Παράδειγμα χρήσης:
var wg sync.WaitGroup
wg.Add(3) // περιμένουμε 3 goroutines
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // σηματοδοτούμε το τέλος
// εργασία goroutine
fmt.Println("Goroutine", id, "ολοκληρώθηκε")
}(i)
}
wg.Wait() // περιμένουμε την ολοκλήρωση όλων των goroutines
fmt.Println("Όλες οι goroutines ολοκληρώθηκαν")
Έτσι, το WaitGroup διασφαλίζει σωστό συντονισμό και αποτρέπει αγώνες ή πρόωρο τερματισμό του προγράμματος.