PLINQ
Parallel Extensions (PLINQ) numele de dezvoltare pentru o bibliotecă de concurgență gestionată dezvoltată printr-o colaborare între Microsoft Research și echipa CLR de la Microsoft. Biblioteca a fost lansată în versiunea 4.0 a .NET Framework. Este compus din două părți: paralel LINQ (PLINQ) și Task Parallel Library (TPL). Acesta constă, de asemenea, dintr-un set de structuri de coordonare a datelor (CDS) - seturi de structuri de date utilizate pentru sincronizarea și coordonarea executării sarcinilor concurente.

O interogare PLINQ este asemănătoare cu una LINQ. Diferența este ca PLINQ încearcă să pună în valoare toate procesoarele sistemului. Realizează acest lucru prin împărțirea sursei de date în mai multe segmente și apoi executând interogarea pe fiecare segment, pe fire de execuție diferite, rulând în paralel pe mai multe procesoare.

Când este folosit modul secvențial?
PLINQ va încerca întotdeauna să execute o interogare cel puțin la fel de rapid ca și cum ar rula secvențial. Mai exact caută operatori sau combinații de operatori care de obicei fac execuția mai lentă in modul paralel. Când gasește aceste combinații rulează în mod secvențial.

După mai multe teste utilizatorul poate realiza că o interogare poate rula mai repede în modul paralel. În aceste cazuri utilizatorul poate folosi metoda WithExecutionMode.
static void ForceParallel()
{
    var customers = GetCustomers();
    var parallelQuery = (from cust in customers.AsParallel()
                            .WithExecutionMode(ParallelExecutionMode.ForceParallelism)
                         where cust.City == "Berlin" 
                         select cust.CustomerName)
                        .ToList();
}

Sintaxă

Diferența între o interogare simplă LINQ și una PLINQ este folosirea metodei AsParalel în sursa de date și executarea interogării folosind ForAll.
   var source = Enumerable.Range(100, 20000);

           
            var parallelQuery = from num in source.AsParallel()
                                where num % 10 == 0
                                select num;

            // Rezultatele sunt procesate in paralel
            parallelQuery.ForAll((e) => DoSomething(e));

Bibliografie
Introduction to PLINQ
How to: Create and Execute a Simple PLINQ Query
Understanding Speedup in PLINQ

Note 

Programare orientată obiect
Parallel Extensions ( PLINQ ) numele de dezvoltare pentru o bibliotecă de concurgență gestionată dezvoltată printr- o colaborare între Microsoft Research și echipa CLR de la Microsoft . Biblioteca a fost lansată în versiunea0 a\.NET Framework . Este compus din două părți : paralel LINQ ( PLINQ ) și Task Parallel Library ( TPL ) . Acesta constă , de asemenea , dintr- un set de structuri de coordonare a datelor ( CDS ) - seturi de structuri de date utilizate pentru sincronizarea și coordonarea executării sarcinilor concurente . O interogare PLINQ este asemănătoare cu una LINQ . Diferența este ca PLINQ încearcă să pună în valoare toate procesoarele sistemului . Realizează acest lucru prin împărțirea sursei de date în mai multe segmente și apoi executând interogarea pe fiecare segment , pe fire de execuție diferite , rulând în paralel pe mai multe procesoare . Când este folosit modul secvențial ? PLINQ va încerca întotdeauna să execute o interogare cel puțin la fel de rapid ca și cum ar rula secvențial . Mai exact caută operatori sau combinații de operatori care de obicei fac execuția mai lentă in modul paralel . Când gasește aceste combinații rulează în mod secvențial . După mai multe teste utilizatorul poate realiza că o interogare poate rula mai repede în modul paralel . În aceste cazuri utilizatorul poate folosi metoda WithExecutionMode . static void ForceParallel ( ) { var customers = GetCustomers ( ) ; var parallelQuery = ( from cust in customers.AsParallel ( ) \.WithExecutionMode (ParallelExecutionMode.ForceParallelism ) where cust.City == " Berlin " select cust.CustomerName ) \.ToList ( ) ; } Sintaxă Diferența între o interogare simplă LINQ și una PLINQ este folosirea metodei AsParalel în sursa de date și executarea interogării folosind ForAll . var source = Enumerable.Range ( 100 , var parallelQuery = from num in source.AsParallel ( ) where num %== 0 select num ; // Rezultatele sunt procesate in paralel parallelQuery.ForAll ( ( e ) = > DoSomething(e ) ) ; Bibliografie Introduction to PLINQ How to : Create and Execute a Simple PLINQ Query Understanding Speedup in PLINQ Note Programare orientată obiect