Zählung / Anzeige der Anzahl der aktiven goroutines
Habe ich eine queue und eine Funktion, die beide dequeueing und enqueueing. Ich möchte sicherstellen, dass die richtige Menge von goroutines auf betreiben der Warteschlange, solange es ist etwas in der Liste.
Dies ist der code, den ich verwende, aber ich Frage mich, ob es einen Weg gibt, der Druck, die Menge der aktuell aktiven goroutines
var 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
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es
Laufzeit.NumGoroutine
aber Sie gehen das falsch.Ein Ansatz ist die Verwendung eines sync.WaitGroup.
Spielplatz
if
.