【问题标题】:Explain please AsParallel()请解释一下 AsParallel()
【发布时间】:2011-05-04 15:45:47
【问题描述】:

谁能解释我一件事。据我了解 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);
}

【问题讨论】:

    标签: c# ienumerable parallel-processing plinq


    【解决方案1】:

    AsParallelPLINQ 功能。 PLINQ 自动并行化本地 LINQ 查询。 PLINQ 具有易于使用的优点,因为它将工作分区和结果整理的负担都交给了框架。

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

    变量d 在您的情况下只能为空,因为PLINQ。如果它为空,则表示集合中没有满足条件x &lt;= 25的元素。

    您可以阅读更多here

    【讨论】:

      【解决方案2】:

      没有。添加 .AsParallel() 后,PLINQ 将使用经典的数据并行评估技术在所有可用处理器上透明地执行 Where、OrderBy 和 Select。实际上查询根本不会执行,直到您在 foreach 循环中“触摸”它(PLINQ 使用延迟执行就像 LINQ)。主线程将像往常一样暂停执行,直到从查询执行返回。

      Additional info here..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-31
        • 2013-07-15
        • 2010-10-24
        • 2019-08-27
        • 2012-09-05
        • 2017-05-15
        相关资源
        最近更新 更多