Maison >développement back-end >Golang >Comment maintenir un nombre constant de Goroutines simultanées dans Go ?

Comment maintenir un nombre constant de Goroutines simultanées dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-02 01:22:15631parcourir

How to Maintain a Constant Number of Concurrent Goroutines in Go?

Comment garantir un nombre constant de goroutines

La programmation simultanée dans Go implique la création de plusieurs goroutines (threads légers) pour effectuer des tâches simultanément. Bien qu'il soit courant de gérer l'exécution des goroutines, un défi différent se pose lorsque vous devez garantir qu'un nombre spécifique de goroutines s'exécutent simultanément.

Considérez un scénario dans lequel vous avez un nombre important de tâches à traiter et souhaitez limiter le nombre de goroutines actives à un moment donné. Par exemple, vous pourriez avoir un processus qui gère les requêtes entrantes et souhaite limiter le nombre de requêtes simultanées pour maintenir la stabilité du système.

Pour y parvenir, nous pouvons utiliser la technique du « parallélisme limité », comme décrit dans l'article Modèles de concurrence Go. L'idée clé est d'utiliser un canal de structures vides comme garde limite pour contrôler le nombre de goroutines de travail.

Dans l'extrait de code fourni, le canal de garde est initialisé avec une capacité égale au nombre maximum de goroutines. nous voulons exécuter simultanément (dans ce cas, 10). Pour garantir cette limite, toute nouvelle création de goroutine essaie d'abord de recevoir une structure vide du canal de garde. Si le canal est plein (indiquant que la limite de goroutine est atteinte), la création est bloquée jusqu'à ce qu'un emplacement soit disponible.

Au fur et à mesure que chaque goroutine termine son travail, elle renvoie la structure vide au canal de garde, ce qui la rend disponible pour qu'un autre goroutine démarre. Grâce à ce mécanisme, nous garantissons que le nombre de goroutines actives reste dans les limites spécifiées.

Dans l'exemple :

  • La variable maxGoroutines définit le nombre maximum de goroutines simultanées.
  • Le canal de garde est initialisé avec une capacité de 10, ce qui limite le nombre maximum de goroutines pouvant être créé.
  • La fonction de travail représente la tâche individuelle que chaque goroutine exécute.
  • La fonction principale crée 30 goroutines, mais seulement 10 d'entre elles peuvent s'exécuter simultanément en raison de la limite du canal de garde.

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