Est-il possible de changer parallelOptions.MaxDegreeOfParallelism lors de l'exécution d'un Parallèle.ForEach

Je suis en cours d'exécution d'un multi-thread boucle:

protected ParallelOptions parallelOptions = new ParallelOptions();

parallelOptions.MaxDegreeOfParallelism = 2;
Parallel.ForEach(items, parallelOptions, item =>
{
//Loop code here
});

Je veux changer la parallelOptions.MaxDegreeOfParallelism lors de l'exécution de la boucle parallèle afin de réduire ou d'augmenter le nombre de threads.

parallelOptions.MaxDegreeOfParallelism = 5;

Il ne semble pas augmenter le fils. Quelqu'un a une idée?

  • Pouvez-vous expliquer pourquoi vous voulez le faire? C'est déjà la rampe jusqu'à la nombre de threads sur ses propres jusqu'à la valeur maximale spécifiée si besoin être, ou du moins d'utilisation, le cas échéant.
  • Principalement à throllel l'application quand elle utilise trop de ressources sur un serveur partagé. Je reçois le serveur de fonctionner à 100%, ce qui dégrade la responsivness des autres applications sur les serveurs.
  • Est-ce un CPU question ou à d'autres "ressources" comme disque?
  • Ce cas particulier est le PROCESSEUR, mais le nombre de threads peuvent effet memmory de disque et ainsi depenting sur le contenu de la boucle foreach. Je voudrais être en mesure de modifier le total de threads utilisés si les ressources système sont imposés trop lourdement.
  • Voir aussi stackoverflow.com/questions/3488381/...
InformationsquelleAutor John Egbert | 2010-09-13