Sobes.tech
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 βοηθά στη σωστή διαχείριση της παράλληλης εκτέλεσης και της αναμονής για την ολοκλήρωση των εργασιών.