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