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.