So zählen und zeigen Sie die Anzahl der aktiven Goroutinen an
In Ihrem Programm möchten Sie gleichzeitig die Anzahl der derzeit aktiven Goroutinen überwachen Aus der Warteschlange entfernen und in die Warteschlange einreihen. Während Sie Code zum Verwalten Ihrer Warteschlange bereitgestellt haben, haben Sie sich nach einer Methode zum Abrufen der aktuellen Anzahl aktiver Goroutinen erkundigt.
Hier ist eine überarbeitete Version Ihres Codes mit WaitGroup:
import ( "fmt" "sync" ) var element int func deen(wg *sync.WaitGroup, queue chan int) { for element := range queue { wg.Done() // Decrement the WaitGroup count upon completion fmt.Println("element is", element) if element%2 == 0 { fmt.Println("new element is", element) wg.Add(2) // Increment WaitGroup count for spawned goroutines queue <- (element*100 + 11) queue <- (element*100 + 33) } } } func main() { var wg sync.WaitGroup queue := make(chan int, 10) queue <- 1 queue <- 2 queue <- 3 queue <- 0 fmt.Println("initial active goroutines:", runtime.NumGoroutine()) for i := 0; i < 4; i++ { wg.Add(1) // Increment WaitGroup count for each spawned goroutine go deen(&wg, queue) } wg.Wait() // Wait for all goroutines to complete close(queue) fmt.Println("final active goroutines:", runtime.NumGoroutine()) fmt.Println("list length:", len(queue)) // Expect 0 }
Das obige ist der detaillierte Inhalt vonWie kann man aktive Goroutinen in einem gleichzeitigen Go-Programm genau zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!