2 votes

Parallélisme avec les données de SqlDataReader

J'ai une boucle qui traite les données, ligne par ligne à partir d'un SqlDataReader. Cela fonctionne à merveille. Maintenant, je veux y ajouter du parallélisme. Idéalement, je veux lire une ligne, la transférer à un thread, lire une autre ligne, etc. J'aimerais avoir un nombre configurable de threads (disons 10) de sorte que lorsqu'un thread s'ouvre (termine sa tâche), un autre est autorisé à démarrer.

Existe-t-il un moyen intégré de faire cela, ou dois-je m'en charger moi-même ? J'ai regardé PLINQ et Parallel, mais j'ai du mal à m'y retrouver, je pense.

2voto

Michael Perrenoud Points 37869

Puisque vous utilisez un DataReader Il s'agit d'un transfert en avant et d'une seule ligne à la fois en mémoire, vous allez donc devoir vous débrouiller tout seul. Vous allez devoir rassembler la rangée en mémoire dans une structure de données et la passer au thread, puis émettre Read() à nouveau pour passer au suivant.

Vous devrez déterminer comment vous allez faire pour pause lorsque vous avez déjà trop de fils ouverts, mais c'est une toute autre discussion et si vous avez des questions à ce sujet, postez ce que vous avez et nous serons heureux de vous aider !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X