你在使用Parallel Extensions吗?

Ste*_*oub 16 .net parallel-processing task plinq task-parallel-library

我希望这不是滥用stackoverflow; 最近我在Parallel Extensions上看到了一些很棒的问题,引起了我的兴趣.

我的问题:你使用的是Parallel Extensions,如果有的话,怎么样?

我的名字是Stephen Toub,我是微软的并行计算平台团队的成员.我们是负责Parallel Extensions的小组.我一直很想知道开发人员如何利用Parallel Extensions(例如Parallel.For,PLINQ,ConcurrentDictionary等),积极的体验,你曾经拥有的负面体验,对未来的特征要求等等.上.
如果您愿意分享此类信息,请在此处作为对此问题的回复,或通过电子邮件私下给我stoub at microsoft dot com.

我非常期待收到你的来信.

提前致谢!

jus*_*ase 0

我一直在我的项目MetaSharp上使用它。我有一个基于 MSBuild 的 DSL 编译管道,一个阶段类型是多对多阶段。M:M 阶段使用.AsParallel.ForAll(...)。

这是片段

protected sealed override IEnumerable<IContext> Process()
{
    if (this.Input.Count() > 1)
    {
        this.Input
            .AsParallel<IContext>()
            .ForAll(this.Process);
    }
    else if (this.Input.Any())
    {
        this.Process(this.Input.Single());
    }

    return this.Input.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

  • 我推荐 `this.Input.Skip(1).Any()`,这样您就可以在点击第二个输入后停止计数。 (4认同)