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