首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Parallel.For对Parallel.Invoke

Parallel.For对Parallel.Invoke
EN

Stack Overflow用户
提问于 2016-06-07 11:24:28
回答 1查看 266关注 0票数 2

我有很多方法是彼此独占的,因此可以并行运行。有什么好办法吗?到目前为止,我有以下两种实现,但我不太确定是否应该使用其中一种。

使用Parallel.For

代码语言:javascript
复制
Parallel.For(0, 2, i =>
{
    switch (i)
    {
        case 0:
            SomeMethod1();
            break;
        case 1:
            SomeMethod2();
            break;
    }
});

使用Parallel.Invoke

代码语言:javascript
复制
Parallel.Invoke(
    () => { SomeMethod1(); },
    () => { SomeMethod2(); }
);

其中哪一个是最好的表现?或者,还有其他更好的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-07 11:28:46

我认为演出不应该是问题所在。这都是关于可读的/可维护的代码。

  • 第一个问题;我认为在Parallel.For中设置一个开关是不好的做法。它令人困惑,对于大型开关来说,它将不可读/不可维护
  • 第二个;更好的是,您可以先将操作存储到List<Action>中。

正如Henrik已经说过的那样:在这种情况下,Parallel.Invoke(SomeMethod1, SomeMethod2); (对我来说)是最好的可读性。(在本例中,它可以工作,因为没有参数/返回值)

但是,作为对您的问题的反应,每次调用执行一个开关/用例,将产生一些额外的开销。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37678065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档