2012-10-17 4 views
3

Je télécharge des fichiers ce qui signifie que même si je n'avais que 2 cœurs, cela améliorerait les performances pour faire plus de deux threads.Parallel.ForEach() - Combien de threads?

Est-ce que le Parallel.ForEach() ne faire autant de fils que la quantité de noyaux, même si je mis ParallelOptions.MaxDegreeOfParallelism à une valeur plus élevée?

+0

Quelle version de .NEt utilisez-vous? ReadAsync peut être beaucoup plus facile si vous êtes sur .NET4.5 –

+0

J'utilise 4.0. Mais je peux demander si nous pouvons installer 4.5 sur les serveurs. – Skuli

+0

duplication possible de [Est-ce que Parallel.ForEach limite le nombre de threads actifs?] (Http://stackoverflow.com/questions/1114317/does-parallel-foreach-limits-the-number-of-active-threads) –

Répondre

3

De la documentation:

Le MaxDegreeOfParallelism limite le nombre d'opérations simultanées gérées par des appels de méthodes parallèles qui sont passés cette ParallelOptions instance à la valeur réglée, si elle est positive. Si MaxDegreeOfParallelism est -1, il n'y a aucune limite placée sur le nombre nombre d'opérations en cours d'exécution.

Cette fonction lance uniquement ArgumentOutOfRangeException et le type MaxDegreeOfParalleism est int. Cela signifie donc qu'il peut créer plus de threads que le nombre de cœurs.

Je peux le confirmer, parce que j'ai couru beaucoup de processus de génération de xml et le Gestionnaire des tâches a montré le nombre de processus exactement comme je l'ai précédemment défini.

Questions connexes