public static List <long> UptoParallel(int limit) { int sieveBound = (int)(limit - 1) / 2; int crossLimit = ((int)(Math.Sqrt(limit) - 1)) / 2; bool[] sieveArray = new bool[sieveBound]; Parallel.For(1, crossLimit, (i) => { if (sieveArray[i] == false) { for (int j = 2 * i * (i + 1); j < sieveBound; j += (2 * i) + 1) { sieveArray[j] = true; } } }); System.Collections.Concurrent.ConcurrentBag <long> sieve = new System.Collections.Concurrent.ConcurrentBag <long>(); sieve.Add(2); Parallel.For(1, sieveBound, (i) => { if (sieveArray[i] == false) { sieve.Add(2 * i + 1); } }); return(sieve.AsParallel().OrderBy(c => c).ToList <long>()); }
public IList <ClientBase> ObtenirListeClient() { var listeClient = new System.Collections.Concurrent.ConcurrentBag <ClientBase>(); var contenuFichierSourceUn = _fournisseurContenuFichier.LireContenuFichier(NOM_FICHIER_SOURCE_UN); var contenuFichierSourceDeux = _fournisseurContenuFichier.LireContenuFichier(NOM_FICHIER_SOURCE_DEUX); var contenuFichierSourceTrois = _fournisseurContenuFichier.LireContenuFichier(NOM_FICHIER_SOURCE_TROIS); if (contenuFichierSourceUn.Any()) { Parallel.ForEach(contenuFichierSourceUn, (ligne) => listeClient.Add(new ClientSourceUn(ligne))); } if (contenuFichierSourceDeux.Any()) { Parallel.ForEach(contenuFichierSourceDeux, (ligne) => listeClient.Add(new ClientSourceDeux(ligne))); } if (contenuFichierSourceTrois.Any()) { Parallel.ForEach(contenuFichierSourceTrois, (ligne) => listeClient.Add(new ClientSourceTrois(ligne))); } return(listeClient.AsParallel().ToList()); }