Пример #1
0
                    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>());
                    }
Пример #2
0
        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());
        }