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