Nasıl yapılır: PLINQ'te Yürütme Modunu Belirtme

Bu örnekte PLINQ'un varsayılan buluşsal özelliklerini atlamasına ve sorgunun şekline bakılmaksızın sorguyu paralelleştirmeye nasıl zorlanacağınız gösterilmektedir.

Not

Bu örnek kullanımı göstermek için tasarlanmıştır ve eşdeğer sıralı LINQ to Objects sorgusundan daha hızlı çalışmayabilir. Hızlandırma hakkında daha fazla bilgi için bkz . PLINQ'ta Hızlandırmayı Anlama.

Örnek

// 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

PLINQ, paralelleştirme fırsatlarını kullanmak için tasarlanmıştır. Ancak, tüm sorgular paralel yürütmeden yararlanmıyor. Örneğin, bir sorgu çok az çalışan tek bir kullanıcı temsilcisi içerdiğinde, sorgu genellikle sıralı olarak daha hızlı çalışır. Paralel yürütmeyi etkinleştirmeye yönelik ek yük elde edilen hızlandırmadan daha pahalı olduğundan sıralı yürütme daha hızlıdır. Bu nedenle, PLINQ her sorguyu otomatik olarak paralelleştirmez. İlk olarak sorgunun şeklini ve onu oluşturan çeşitli işleçleri inceler. Bu çözümlemeye bağlı olarak, varsayılan yürütme modundaKI PLINQ sorgunun bir bölümünü veya tümünü sıralı olarak yürütmeye karar verebilir. Ancak, bazı durumlarda sorgunuz hakkında PLINQ'un analizden belirleyebildiğinden daha fazla bilgi edinebilirsiniz. Örneğin, bir temsilcinin pahalı olduğunu ve sorgunun paralelleştirmeden kesinlikle yararlanacağını biliyor olabilirsiniz. Böyle durumlarda yöntemini kullanabilir WithExecutionMode ve PLINQ'a sorguyu ForceParallelism her zaman paralel olarak çalıştırmasını bildirmek için değerini belirtebilirsiniz.

Kod Derleniyor

Bu kodu kesin ve PLINQ Veri Örneği'ne yapıştırın ve yöntemini adresinden Mainçağırın.

Ayrıca bkz.