Ich habe eine Warteschlange und eine Funktion, die sowohl die Warteschlange als auch die Warteschlange entfernt. Ich möchte sicherstellen, dass die richtige Menge an Goroutinen in der Warteschlange operiert, solange etwas in der Liste ist.Anzahl/Anzeige der Anzahl der aktiven Goroutinen
Dies ist der Code, den ich verwende, aber ich habe mich gefragt, ob es einen Weg
des Druckens der Menge der aktuell aktiven goroutines istvar element int
func deen(queue chan int) {
element := <-queue
fmt.Println("element is ", element)
if element%2 == 0 {
fmt.Println("new element is ", element)
queue <- (element*100 + 11)
queue <- (element*100 + 33)
}
}
func main() {
queue := make(chan int, 10)
queue <- 1
queue <- 2
queue <- 3
queue <- 0
for len(queue) != 0 {
for i := 0; i < 2; i++ {
go deen(queue)
}
}
fmt.Scanln()
fmt.Println("list is has len", len(queue)) //this must be 0
}
Dank aber WaitGroup ist nicht zu warten, dass etwas getan wird? Ich möchte wirklich sicherstellen, dass sie nicht aus irgendeinem äußeren Grund zu früh sterben – meto
@meto Goroutines nicht "sterben" so, wenn eine Goroutine stirbt dann Ihr Programm höchstwahrscheinlich abgestürzt ist, werde ich ein Beispiel hinzufügen. – OneOfOne
das ist sehr interessant. Nur eine kurze Folgefrage. Der wg.Done Teil könnte auch nach dem Println platziert worden sein, aber sicher vor dem if, oder? – meto