Système.Le filetage.Tâches - Limiter le nombre de Tâches simultanées

J'ai juste commencé à regarder le nouveau Système".Le filetage.Les tâches de" la bonté .Net 4.0, et voudrais savoir si il y a une génération à l'appui de limiter le nombre de tâches simultanées qui s'exécutent à la fois, ou si cela doit être traité manuellement.

E. G: Si j'ai besoin d'appeler une méthode de calcul de 100 fois, est-il un moyen de mettre en place 100 Tâches, mais ont seulement 5 exécuter simultanément? La réponse vient peut-être de créer des 5 tâches, appelez Tâche.WaitAny, et de créer une nouvelle Tâche comme chaque précédente se termine. Je veux juste m'assurer que je ne suis pas en manque un truc, si il y a une meilleure façon de le faire.

Fondamentalement, est-il intégré dans la façon de le faire:

Dim taskArray() = {New Task(Function() DoComputation1()),
                   New Task(Function() DoComputation2()),
                   ...
                   New Task(Function() DoComputation100())}

Dim maxConcurrentThreads As Integer = 5
RunAllTasks(taskArray, maxConcurrentThreads)

Merci pour toute aide.

  • Pourriez-vous expliquer pourquoi vous devez vous limiter à 5? Notez que le planificateur de tâches ne démarre pas tous les 100 dans le même temps, il utilise le pool de threads en interne (ou le pool de threads utilise le système des tâches) donc il va limiter le nombre de tâches simultanées à quelque chose de petit, mais ça pourrait changer, et il pourrait être lié au nombre de cœurs dans votre système, mais le fait de savoir pourquoi vous souhaitez limiter à un nombre précis peuvent donner quelques bonnes réponses.
  • Le calcul fait les appels d'un webservice dans le cadre de son opération. Ce n'est écrasante le webservice. 5 est juste un exemple.
  • Comment Parallèles? stackoverflow.com/questions/5009181/...
InformationsquelleAutor James | 2010-05-24