共用方式為


HOW TO:在 PLINQ 中指定執行模式

更新:2010 年 5 月

這個範例顯示如何強制 PLINQ 略過其預設啟發式,直接平行處理查詢而不考慮查詢的型態。

注意事項警告

這個範例是為了示範用法,執行速度可能比不上對應的循序 LINQ to Objects 查詢。如需加速的詳細資訊,請參閱認識 PLINQ 中的加速

範例

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
// 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();
}

PLINQ 是專為運用平行處理的機會而設計。 不過,不是所有查詢都適合平行執行方式。 例如,當查詢只包含一個執行極少工作的使用者委派時,以循序方式執行查詢通常會較快。 這是因為啟用平行化執行帶來的負荷高於所獲得的加速效益。 因此,PLINQ 並不會自動平行處理每個查詢。 它會先檢查查詢的型態和查詢中的各種運算子。 根據這項分析,在預設執行模式下的 PLINQ 可能會決定以循序方式執行局部或整個查詢。 不過,有時候相較於 PLINQ 從分析結果來做判斷,您可能還比較瞭解您自己的查詢。 例如,您可能知道某個委派非常耗費資源,所以很肯定平行化作業一定有益於查詢。 在這種情況下,您可以使用 WithExecutionMode<TSource> 方法並指定 ForceParallelism 值,以指示 PLINQ 永遠以平行方式執行查詢。

編譯程式碼

請將這段程式碼剪下並貼在 PLINQ 資料範例中,然後從 Main 中呼叫方法。

請參閱

參考

AsSequential<TSource>

概念

平行 LINQ (PLINQ)

變更記錄

日期

記錄

原因

2010 年 5 月

加入有關使用方式和 加速的比較注意事項。

客戶回函。