閱讀英文

共用方式為


如何:在 PLINQ 中指定執行模式

這個範例示範如何強制 PLINQ 略過其預設啟發學習法並以平行方式處理查詢,而不考慮查詢的種類。

注意

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

範例

// 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方法並指定 ForceParallelism 值,指示 PLINQ 永遠以平行方式執行查詢。

編譯程式碼

將此程式碼剪下並貼到 PLINQ 資料範例,並從 Main 呼叫此方法。

另請參閱


其他資源