2012-08-24 6 views
1

Dans la boucle parallèle ci-dessous, existe-t-il un moyen fiable de déterminer combien de threads seront créés et avec quelles limites d'index?Estimer les indices de segment dans Parallel.For

Parallel.For 
(
    0, 
    int.MaxValue, 
    new ParallelOptions() {MaxDegreeOfParallelism=Environment.ProcessorCount}, 
    (i) => 
    { 
     // Monitor [i] to see how the range is segmented. 
    } 
); 

Si le nombre de processeur sur la machine cible est 4 et nous utilisons tous les 4 processeurs, je constate que 4 segments sont créés à peu près la même taille, chacun étant approximativement Int.MaxValue/4. Cependant, ceci est juste l'observation et Parallel.For peut ou peut ne pas offrir la segmentation déterministe. Rechercher autour n'a pas aidé beaucoup non plus. Est-il possible de prévoir ou de calculer cela?

+0

Quelle est l'application qui a des opérations Int.MaxValue à effectuer? – Paparazzi

+0

int.MaxValue est juste à utiliser pour cet exemple. Mon algorithme actuel traite des itérations de nombres au-delà même de long.Count. –

+0

OK quel est le problème spécifique? – Paparazzi

Répondre