Heim >Backend-Entwicklung >Golang >Wie kann ich die Anzahl der aktiven Goroutinen in meinem Go-Programm genau zählen und anzeigen?
Sie haben eine Funktion erstellt, die Elemente aus einer Warteschlange entfernt und in die Warteschlange einreiht und so sicherstellt, dass die richtige Anzahl von Goroutinen ausgeführt wird die Warteschlange, solange sie Elemente enthält. Sie wünschen sich jedoch eine Methode, um die Anzahl der derzeit aktiven Goroutinen anzuzeigen.
runtime.NumGoroutine Usage
Während die runtime.NumGoroutine-Funktion die Anzahl der laufenden Goroutinen bereitstellen kann In Ihrem Programm ist es wichtig, das Problem anders anzugehen. Dies liegt daran, dass Ihre Schleifen aufgrund der verschachtelten Schleife ständig Goroutinen erzeugen und CPU-Zyklen verschwenden.
Alternativer Ansatz: Sync.WaitGroup
Eine effektivere Lösung ist die Verwendung sync.WaitGroup. Indem Sie den Code wie folgt ändern:
func deen(wg *sync.WaitGroup, queue chan int) { for element := range queue { fmt.Println("element is ", element) if element%2 == 0 { fmt.Println("new element is ", element) wg.Add(2) queue <- (element * 100 + 11) queue <- (element * 100 + 33) } wg.Done() } } func main() { var wg sync.WaitGroup queue := make(chan int, 10) queue <- 1 queue <- 2 queue <- 3 queue <- 0 for i := 0; i < 4; i++ { wg.Add(1) go deen(&wg, queue) } wg.Wait() close(queue) fmt.Println("list len", len(queue)) // this must be 0 }
In diesem überarbeiteten Code:
Das obige ist der detaillierte Inhalt vonWie kann ich die Anzahl der aktiven Goroutinen in meinem Go-Programm genau zählen und anzeigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!