Wie wartet man auf den Abschluss aller Goroutinen in Go ohne Verwendung von time.Sleep?
Hallo zusammen! Ich habe angefangen, Go zu lernen und bin auf ein Problem mit der Synchronisation von Goroutinen gestoßen. Ich schreibe ein einfaches Programm, das mehrere Goroutinen zur parallelen Datenverarbeitung startet, aber ich schaffe es nicht, die Hauptfunktion auf deren Abschluss warten zu lassen.
Hier ist mein Code:
```go
package main
import (
"fmt"
"time"
)
func worker(id int) {
fmt.Printf("Worker %d gestartet\n", id)
time.Sleep(2 * time.Second) // Simulation der Arbeit
fmt.Printf("Worker %d beendet\n", id)
}
func main() {
for i := 1; i <= 5; i++ {
go worker(i)
}
// Das Programm wird sofort beendet, ohne auf die Goroutinen zu warten
fmt.Println("Hauptfunktion beendet")
}
```
Das Problem ist, dass das Programm sofort beendet wird, ohne auf die Ausführung der Goroutinen zu warten. Ich weiß, dass man `time.Sleep` verwenden kann, aber...
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs