Un pool de connexions est un pool d'objets contenant des objets de connexion. "La mise en pool d'objets vous permet de contrôler le nombre de connexions que vous utilisez, par opposition à la mise en pool de connexions, où vous contrôlez le nombre maximal de connexions atteint." Un pool d'objets permet à une application de limiter le nombre d'instances utilisées à un moment donné. Si l'application a besoin de plus d'instances que la limite, le pool d'objets doit décider comment traiter ce problème. Il y a un certain nombre de stratégies possibles:
- return null
- lancer une exception
- bloc jusqu'à ce qu'une instance est disponible
- augmenter la taille de la piscine
Un pool de connexion est un pool d'objets, il a donc exactement la même décision à prendre.
Une implémentation spécifique d'un pool d'objets (ou pool de connexions) peut utiliser l'une quelconque de ces stratégies, ou plusieurs en combinaison. À mon avis, l'énoncé cité est trompeur à moins qu'il ne parle d'implémentations spécifiques.
A Simple Object Piscine Exemple
Une piscine a des paramètres de configuration. Un pool simple peut avoir un minimum_size et un maximum_size. Lorsque le pool est disponible pour la première fois, il contiendra des objets minimum_size. Lorsque les clients demandent ces objets, le pool contiendra moins d'objets non alloués. Ce nombre peut également augmenter lorsque les clients renvoient des objets dans le pool.
À un certain point, le pool peut atteindre un état dans lequel il n'a aucun objet non alloué, mais un ou plusieurs clients demandent un objet. À ce stade, tant que le pool n'a pas atteint maximum_size, il peut créer de nouveaux objets et les ajouter au pool. Il peut maintenant renvoyer des objets aux clients.
Si le pool a atteint la valeur maximum_size, il ne peut pas augmenter la taille du pool. Il doit donc traiter les clients d'une manière différente - disons qu'il génère une exception ObjectPoolExhausted.
Un peu plus tard, certains clients renvoient des objets dans le pool et peuvent continuer comme d'habitude jusqu'à ce qu'il ne dispose plus d'aucun objet.
Retour à la question
L'article MSDN dit que sa mise en œuvre du pool d'objet spécifique augmentera la taille de la piscine jusqu'à la valeur maximale spécifiée.Lorsque le maximum est atteint, contrairement à l'exemple ci-dessus, au lieu de lancer une exception, le client attend jusqu'à ce qu'un objet soit renvoyé au pool, puis le nouvel objet renvoyé au client en attente. L'article MSDN indique que son implémentation de pool de connexion spécifique ne possède pas de paramètre de taille maximale - il continuera à créer de nouvelles connexions pour répondre à la demande (il finira par atteindre certaines limites du système et la requête échouera d'une manière différente). t spécifié).
Quelle plateforme? Quelle langue? – Oded