Sobes.tech
Junior

Wie erkennt man in der Programmiersprache (Go), dass alle laufenden Goroutines beendet sind und der Haupt-Thread die Ergebnisse verwenden kann?

sobes.tech KI

Antwort von AI

In Go wird der Typ sync.WaitGroup üblicherweise verwendet, um die Beendigung aller laufenden Goroutinen zu verfolgen. Er ermöglicht es dem Haupt-Thread, zu warten, bis alle Goroutinen ihre Ausführung beendet haben.

Beispiel für die Verwendung:

var wg sync.WaitGroup

wg.Add(3) // warten auf 3 Goroutinen

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // Signalisiert das Ende der Goroutine
        // Arbeit der Goroutine
        fmt.Println("Goroutine", id, "beendet")
    }(i)
}

wg.Wait() // Der Haupt-Thread blockiert, bis der Zähler von wg auf 0 gesetzt ist
fmt.Println("Alle Goroutinen sind beendet, Ergebnisse können verwendet werden")

Auf diese Weise ermöglicht WaitGroup die Synchronisierung der Ausführung und stellt sicher, dass der steuernde Thread auf den Abschluss aller parallelen Aufgaben wartet.