Megosztás a következőn keresztül:


Útmutató: A végrehajtási mód megadása a PLINQ-ban

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: .

Lásd még