Sobes.tech
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.