我想了解如何使用PLINQ並行性,如果延遲執行。這是一個簡單的例子。PLINQ延遲執行
string[] words = { "believe", "receipt", "relief", "field" };
bool result = words.AsParallel().Any(w => w.Contains("ei"));
使用LINQ,我希望執行以達到「回執」值並返回true,而不執行查詢的值的其餘部分。
如果我們同時這樣做,「救濟」的評估可能在「回執」結果返回之前就開始了。但是一旦查詢知道「收據」會產生真實結果,其他線程是否會立即產生?
在我的情況下,這很重要,因爲「any」測試可能非常昂貴,我想釋放處理器以執行其他任務。
http://msdn.microsoft.com/en-us/library/dd997425(VS.100).aspx表示延遲執行原則仍在PLINQ中發揮作用......你能澄清一下你在你的意思方面呢? – tbischel 2010-03-08 19:17:51
@tbischel:他們這樣做,他們不......這個評論有點誤導。不同之處在於,在LINQ中,每個元素只按請求執行(延遲)。在PLINQ中,只要您發出第一個請求,就會設置一個'Partitioner',它開始將您的工作安排到多個線程。最終的累計結果直到請求才會被推回,但處理髮生在請求元素之前。 (如果您請求結果的元素1,元素1,2,3和4可能全部被調度,並立即開始「工作」......) –
2010-03-08 19:33:10