Senior
Jak zrobić, aby wykonanie dwóch worker() było równoległe zamiast sekwencyjnego (6 sekund → 3 sekundy)?
sobes.tech AI
Odpowiedź od AI
W Go, aby wykonywać funkcje równolegle, można użyć gorutyn. Jeśli masz dwie funkcje worker(), które obecnie są wykonywane sekwencyjnie i łącznie zajmują 6 sekund, uruchamiając je w osobnych gorutynach, będą wykonywać się równolegle, a łączny czas zostanie zmniejszony do około 3 sekund.
Przykład:
func() {
worker()
}()
func() {
worker()
}()
// Aby poczekać na zakończenie obu gorutyn, użyj sync.WaitGroup
var wg sync.WaitGroup
wg.Add(2)
func() {
defer wg.Done()
worker()
}()
func() {
defer wg.Done()
worker()
}()
wg.Wait()
W ten sposób uruchomienie funkcji w gorutynach i synchronizacja ich za pomocą WaitGroup pozwala na ich równoległe wykonanie.