我有很多方法是彼此独占的,因此可以并行运行。有什么好办法吗?到目前为止,我有以下两种实现,但我不太确定是否应该使用其中一种。
Parallel.For(0, 2, i =>
{
switch (i)
{
case 0:
SomeMethod1();
break;
case 1:
SomeMethod2();
break;
}
});Parallel.Invoke(
() => { SomeMethod1(); },
() => { SomeMethod2(); }
);其中哪一个是最好的表现?或者,还有其他更好的方法吗?
发布于 2016-06-07 11:28:46
我认为演出不应该是问题所在。这都是关于可读的/可维护的代码。
Parallel.For中设置一个开关是不好的做法。它令人困惑,对于大型开关来说,它将不可读/不可维护List<Action>中。正如Henrik已经说过的那样:在这种情况下,Parallel.Invoke(SomeMethod1, SomeMethod2); (对我来说)是最好的可读性。(在本例中,它可以工作,因为没有参数/返回值)
但是,作为对您的问题的反应,每次调用执行一个开关/用例,将产生一些额外的开销。
https://stackoverflow.com/questions/37678065
复制相似问题