在函数中,我想对作为参数提供的IEnumerable进行并行处理。
这个IEnumerable已经是一些链接的结果,即:
IEnumerable argument = InitialEnumerable.Select(x => DoHeavyProcessing(x))...
但对我来说它是不透明的 - 我不能修改这个参数的创建方式。我不知道它是如何构建的。
现在,当我调用argument.AsParallel()时它没有用 - AsParallel()只是并行处理它右侧的处理,但之前的所有工作都按顺序运行。
相反,我需要以某种方式解析这个IEnumerable并“装饰”它,以便繁重的工作并行化。
答案 0 :(得分:3)
没有办法做到这一点。 IEnumerable
是专门设计的,在您之前已经提取项目之前,您无法获取给定项目。
无论生成什么IEnumerable
都需要为并行生成这些项目提供某种类型的支持。