2009-10-06 7 views
2

Disons que j'aiOptimisation des itérations foreach indépendantes dans .NET3.5

foreach(int x in xs[]) // xs is an array of int 
{ 
x++; 
} 

Chaque fois que par le foreach est indépendant des autres. Existe-t-il un moyen rapide de demander au CLR de faire chacun sur un thread séparé ou de l'accélérer en le parallélisant nativement?

Peut-être qu'il sait déjà faire cela. Je sais que je pourrais créer des threads et les démarrer, mais il y aurait de la place s'il y avait un attribut ou un drapeau que je pourrais définir pour m'en occuper.

Mon code actuel est plus complexe mais chaque itération à travers le foreach est également sans effet entre les itérations.

quelque chose comme

[parallelize maxThreads=5] 
foreach(int x in xs[]) // xs is an array of int 
{ 
x++; 
} 
+0

Est-ce que cela fonctionne même? int est un type de valeur. – recursive

+0

Ouais oubliez l'exemple de code, c'était semi pseudo code pour illustrer mon point .... – Matt

Répondre

12

Vous pouvez essayer un Parallel.For de la bibliothèque parallèle de tâches. Cela pourrait très bien fonctionner si vous obtenez la granularité correcte. Voir l'article suivant pour plus de détails:

Optimize code géré pour machines multicœur
http://msdn.microsoft.com/en-us/magazine/cc163340.aspx

La bibliothèque parallèle de tâches pour .NET 3.5 SP1 can be downloaded from this page. Voici un direct link.

+0

C'est génial! Merci pour le conseil – Matt

+0

Je ne savais pas à ce sujet, merci. –