Maison >développement back-end >Golang >Comment surveiller et contrôler efficacement le nombre de Goroutines actives dans Go ?

Comment surveiller et contrôler efficacement le nombre de Goroutines actives dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-09 22:20:12703parcourir

How to Effectively Monitor and Control the Number of Active Goroutines in Go?

Comment afficher le nombre de goroutines actives

Dans un scénario où vous avez une file d'attente avec des opérations simultanées, il devient essentiel de surveiller le nombre de goroutines actives. Cela garantit que le nombre approprié de goroutines gère la file d'attente, optimisant ainsi les performances et l'utilisation des ressources.

L'extrait de code fourni montre une boucle qui génère des goroutines en fonction du nombre d'éléments dans une file d'attente. Cependant, cette approche présente plusieurs inconvénients :

  • Elle continue de générer des goroutines indéfiniment.
  • Cela peut entraîner une utilisation excessive du processeur en raison d'un traitement redondant.

Une meilleure solution consiste à utiliser un mécanisme de synchronisation. Ici, un WaitGroup est utilisé :

func deen(wg *sync.WaitGroup, queue chan int) {
    for element := range queue {
        wg.Done()
        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)
        }
    }
}

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
}

Ce code révisé garantit que le nombre de goroutines est toujours limité à quatre et termine le traitement une fois que tous les éléments de la file d'attente ont été traités. Cette approche résout efficacement le problème de la création excessive de goroutines et de la consommation CPU.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn