制作一个不透明的IEnumerable查询并行(PLINQ)

时间:2014-02-07 16:23:11

标签: c# linq parallel-processing plinq

在函数中,我想对作为参数提供的IEnumerable进行并行处理。

这个IEnumerable已经是一些链接的结果,即:

IEnumerable argument = InitialEnumerable.Select(x => DoHeavyProcessing(x))...

但对我来说它是不透明的 - 我不能修改这个参数的创建方式。我不知道它是如何构建的。

现在,当我调用argument.AsParallel()时它没有用 - AsParallel()只是并行处理它右侧的处理,但之前的所有工作都按顺序运行。

相反,我需要以某种方式解析这个IEnumerable并“装饰”它,以便繁重的工作并行化。

1 个答案:

答案 0 :(得分:3)

没有办法做到这一点。 IEnumerable是专门设计的,在您之前已经提取项目之前,您无法获取给定项目。

无论生成什么IEnumerable都需要为并行生成这些项目提供某种类型的支持。