Vous avez créé une fonction qui retire et met en file d'attente les éléments d'une file d'attente, garantissant que le nombre correct de goroutines fonctionnent sur la file d'attente tant qu'elle contient des éléments. Cependant, vous désirez une méthode pour afficher le nombre de goroutines actuellement actives.
runtime.NumGoroutine Usage
Alors que la fonction runtime.NumGoroutine peut fournir le nombre de goroutines en cours d'exécution dans votre programme, il est crucial d'aborder la problématique différemment. En effet, vos boucles génèreront continuellement des goroutines et gaspilleront des cycles de processeur en raison de la boucle imbriquée.
Approche alternative : Sync.WaitGroup
Une solution plus efficace consiste à utiliser sync.WaitGroup. En modifiant le code comme suit :
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 }
Dans ce code révisé :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!