2011-05-04 190 views
9

有人可以解釋我一件事。據我所知AsParallel()在自己的任務中執行。因此,如果查詢返回大量數據,那麼當'foreach'開始執行Console.WriteLine時,變量'd'可以爲空。請解釋AsParallel()

var integerList = Enumerable.Range(1, 100); 
var d = from x in integerList.AsParallel() 
where x <= 25 
select x; 
foreach (var v in d) 
{ 
Console.WriteLine(v); 
} 

回答

3

AsParallelPLINQ功能。 PLINQ自動並行化本地LINQ查詢。 PLINQ具有易於使用的優點,因爲它將工作分區和結果歸類的負擔轉移到框架上。

要使用PLINQ,只需在輸入序列上調用AsParallel(),然後照常繼續LINQ查詢。

變量d你的情況可以不是只能是空的,因爲PLINQ。如果它將爲空,則表示該集合中沒有滿足條件x <= 25的元素。

你可以閱讀更多here

1

.AsParallel()號一旦添加,PLINQ將透明地執行其中,排序依據,並選擇全部採用經典的數據並行評價技術可用的處理器。實際上,只有在foreach循環中觸摸它時,纔會執行查詢(PLINQ像LINQ一樣使用緩存執行)。主線程將停止執行,直到像往常一樣從查詢執行返回。

Additional info here..