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% 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
lesenNein. 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.
Tags und Links c# parallel-processing ienumerable plinq