Junior — Middle
Ποιος είναι ο ρόλος και η λειτουργία της δομής WaitGroup κατά την ανάπτυξη σε Go;
sobes.tech AI
Απάντηση από AI
Στη Go, η δομή WaitGroup χρησιμοποιείται για τον συγχρονισμό πολλαπλών goroutines. Επιτρέπει στη βασική goroutine να περιμένει την ολοκλήρωση μιας ομάδας άλλων goroutines.
Βασικές μέθοδοι:
- Add(int): αυξάνει τον μετρητή των αναμενόμενων goroutines.
- Done(): μειώνει τον μετρητή κατά 1, καλείται όταν μια goroutine ολοκληρώνεται.
- Wait(): μπλοκάρει την εκτέλεση μέχρι ο μετρητής να γίνει 0.
Παράδειγμα χρήσης:
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 βοηθά στη σωστή διαχείριση της παράλληλης εκτέλεσης και της αναμονής για την ολοκλήρωση των εργασιών.