Erkläre bitte AsParallel ()

9

Kann mir jemand eine Sache erklären? Wie ich verstehe, führt AsParallel () in eigener Task aus. Wenn die Abfrage also eine große Menge an Daten zurückgibt, kann die Variable 'd' leer sein, wenn 'foreach' damit begonnen hat, Console.WriteLine auszuführen?

%Vor%     
user628147 04.05.2011, 15:45
quelle

2 Antworten

3

AsParallel ist ein PLINQ -Feature. PLINQ parallelisiert automatisch lokale LINQ -Abfragen. PLINQ hat den Vorteil, dass es einfach zu verwenden ist, da es sowohl die Arbeitspartitionierung als auch die Ergebnissortierung für das Framework entlastet.

Um PLINQ zu verwenden, rufen Sie einfach AsParallel() in der Eingabesequenz auf und setzen die LINQ -Abfrage wie gewohnt fort.

Variable d kann in Ihrem Fall nur wegen PLINQ nicht leer sein. Wenn es leer ist, bedeutet dies, dass in der Auflistung keine Elemente vorhanden sind, die die Bedingung x <= 25 erfüllen.

Sie können mehr hier

lesen     
oxilumin 04.05.2011 17:17
quelle
1

Nein. Sobald Sie .AsParallel () hinzugefügt haben, führt PLINQ die Where-, OrderBy- und Select-Operationen auf allen verfügbaren Prozessoren unter Verwendung klassischer Datenparallel-Auswertungstechniken transparent aus. Tatsächlich wird die Abfrage überhaupt nicht ausgeführt, bis Sie sie in der foreach-Schleife "berühren" (PLINQ verwendet die Ausführung wie LINQ). Der Haupt-Thread stoppt die Ausführung, bis er wie üblich von der Ausführung der Abfrage zurückkehrt.

Zusätzliche Informationen hier ..

    
Petr Abdulin 04.05.2011 17:21
quelle