我正在考虑创建自己的PLinq扩展方法,以提供在我最近的问题:在并行linq中指定对象的任务超时中描述的特性。我希望尽可能多地重用现有的.Net结构,包括可能已经在PLinq查询上指定一定程度并行性的任何代码。
在下面的代码块中,我指定了一定程度的并行性。假设CustomForAll是一个具有与现有ForAll方法相同签名的自定义PLinq扩展方法,我如何读取TSource上指定的并行度?
private PictureList FetchPictures(List<Picture> wallResults)
{
wallResults
.AsParallel()
.WithDegreeOfParallelism(10)
.CustomForAll(delegate(Picture p){发布于 2013-08-15 20:57:40
不幸的是,这不是一个支持的操作。PLINQ的设计方式不允许第三方扩展,而不恢复到IEnumerable<T>。
并行度存储在ParallelQuery类中的私有成员变量中(private QuerySettings m_specifiedSettings,在int? m_degreeOfParallism字段中)。
您可能会使用反射提取这一点,但这是一个内部实现细节,可能会发生更改。
https://stackoverflow.com/questions/18261622
复制相似问题