请解释AsParallel()

时间:2011-05-04 15:45:48

标签: c# ienumerable parallel-processing plinq

有人可以解释一件事。据我所知,AsParallel()在自己的任务中执行。那么,如果查询返回大量数据,那么当'foreach'开始执行Console.WriteLine时,变量'd'可以为空?

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

2 个答案:

答案 0 :(得分:3)

AsParallelPLINQ功能。 PLINQ自动并行化本地LINQ个查询。 PLINQ具有易于使用的优点,因为它可以减轻工作分区和结果整理到框架的负担。

要使用PLINQ,只需在输入序列上调用AsParallel(),然后照常继续LINQ查询。

在您的情况下,

变量d 只能因为PLINQ而为空。如果它为空,则表示集合中没有满足条件x <= 25的元素。

您可以阅读更多here

答案 1 :(得分:1)

没有。一旦添加了.AsParallel(),PLINQ将使用经典数据并行评估技术透明地在所有可用处理器上执行Where,OrderBy和Select。实际上,在foreach循环中触摸它之前根本不执行查询(PLINQ使用与LINQ一样的默认执行)。主线程将暂停执行,直到从常规查询执行返回。

Additional info here..