Junior — Middle
Wie kann man sicherstellen, dass alle laufenden Goroutines in einem Programm beendet werden?
sobes.tech KI
Antwort von AI
In Go gibt es keine eingebaute Möglichkeit, eine Goroutine von außen zwangsweise zu beenden. Um sicherzustellen, dass alle laufenden Goroutines beendet werden, wird üblicherweise die Synchronisation mit sync.WaitGroup verwendet.
Funktionsprinzip:
- Vor dem Start jeder Goroutine wird
wg.Add(1)aufgerufen. - Am Ende der Goroutine wird
wg.Done()aufgerufen. - In der Hauptfunktion wird
wg.Wait()aufgerufen, das die Ausführung blockiert, bis der Zähler auf null steht.
Beispiel:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// Arbeit der Goroutine
}()
wg.Wait() // Warten, bis alle Goroutines beendet sind
Auf diese Weise wartet das Programm garantiert, bis alle Goroutines beendet sind, bevor es fortfährt oder endet.