Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a példa bemutatja, hogyan kényszerítheti a PLINQ-t az alapértelmezett heurisztika megkerülésére, és hogyan párhuzamosíthat egy lekérdezést a lekérdezés alakjától függetlenül.
Feljegyzés
Ez a példa a használat bemutatására szolgál, és előfordulhat, hogy nem fut gyorsabban, mint az objektumokhoz tartozó, szekvenciális LINQ lekérdezés. További információ a gyorsításról: Understanding Speedup in PLINQ.
Példa
// Paste into PLINQDataSample class.
static void ForceParallel()
{
var customers = GetCustomers();
var parallelQuery = (from cust in customers.AsParallel()
.WithExecutionMode(ParallelExecutionMode.ForceParallelism)
where cust.City == "Berlin"
select cust.CustomerName)
.ToList();
}
Private Shared Sub ForceParallel()
Dim customers = GetCustomers()
Dim parallelQuery = (From cust In customers.AsParallel().WithExecutionMode(ParallelExecutionMode.ForceParallelism)
Where cust.City = "Berlin"
Select cust.CustomerName).ToList()
End Sub
A PLINQ a párhuzamosítási lehetőségek kihasználására szolgál. Azonban nem minden lekérdezés élvezi a párhuzamos végrehajtás előnyeit. Ha például egy lekérdezés egyetlen felhasználói delegáltat tartalmaz, amely kevés munkát végez, a lekérdezés általában egymás után gyorsabban fog futni. A szekvenciális végrehajtás gyorsabb, mert a párhuzamos végrehajtás engedélyezésével járó többletterhelés drágább, mint a kapott gyorsítás. Ezért a PLINQ nem párhuzamosítja automatikusan az összes lekérdezést. Először megvizsgálja a lekérdezés alakját és az azt alkotó különböző operátorokat. Az elemzés alapján a PLINQ az alapértelmezett végrehajtási módban dönthet úgy, hogy a lekérdezés egy részét vagy egészét egymás után hajtja végre. Bizonyos esetekben azonban többet tud a lekérdezésről, mint amennyit a PLINQ az elemzésből képes meghatározni. Előfordulhat például, hogy tudja, hogy a meghatalmazott költséges, és hogy a lekérdezésnek biztosan hasznára válik a párhuzamosítás. Ilyen esetekben használhatja a WithExecutionMode metódust, és megadhatja azt az értéket, amely arra utasítja a ForceParallelism PLINQ-t, hogy mindig párhuzamosként futtassa a lekérdezést.
A kód összeállítása
Vágja ki és illessze be a kódot a PLINQ-adatmintába , és hívja meg a metódust a következőből Main: .