Senior
Πώς να κάνετε την εκτέλεση δύο worker() παράλληλη αντί για διαδοχική (6 δευτερόλεπτα → 3 δευτερόλεπτα);
sobes.tech AI
Απάντηση από AI
Στη γλώσσα Go, για την παράλληλη εκτέλεση συναρτήσεων, μπορείτε να χρησιμοποιήσετε goroutines. Αν έχετε δύο συναρτήσεις worker(), που τρέχουν αυτήν τη στιγμή σειριακά και συνολικά διαρκούν 6 δευτερόλεπτα, ξεκινώντας τις σε ξεχωριστές goroutines, θα εκτελεστούν παράλληλα και ο συνολικός χρόνος θα μειωθεί περίπου σε 3 δευτερόλεπτα.
Παράδειγμα:
func() {
worker()
}()
func() {
worker()
}()
// Για να περιμένετε να ολοκληρωθούν και οι δύο goroutines, χρησιμοποιήστε sync.WaitGroup
var wg sync.WaitGroup
wg.Add(2)
func() {
defer wg.Done()
worker()
}()
func() {
defer wg.Done()
worker()
}()
wg.Wait()
Έτσι, η εκκίνηση συναρτήσεων σε goroutines και η συγχρονισμός μέσω WaitGroup επιτρέπει την παράλληλη εκτέλεσή τους.