gpt4 book ai didi

c# - Parallel.For 与 Parallel.Invoke

转载 作者:行者123 更新时间:2023-11-30 20:35:39 28 4
gpt4 key购买 nike

我有一堆相互排斥的方法,因此可以并行运行。有这样做的好方法吗?到目前为止,我有以下两种实现方式,但我不确定是否应该选择其中一种。

使用 Parallel.For :

Parallel.For(0, 2, i =>
{
switch (i)
{
case 0:
SomeMethod1();
break;
case 1:
SomeMethod2();
break;
}
});

使用 Parallel.Invoke :

Parallel.Invoke(
() => { SomeMethod1(); },
() => { SomeMethod2(); }
);

其中哪一个是最佳性能明智的?或者还有其他更好的方法吗?

最佳答案

我认为性能不应该是这里的问题。这一切都是关于可读/可维护的代码。

  • 第一个;我认为在 Parallel.For 中放置一个开关是不好的做法.它令人困惑,并且使用大开关,它将不可读/不可维护
  • 第二个;更好的是,您可以将操作存储到 List<Action> 中首先。

正如 Henrik 所说:Parallel.Invoke(SomeMethod1, SomeMethod2);在这种情况下(对我来说也是)最好的可读性。 (在这种情况下它有效,因为没有参数/返回值)


但是作为对你问题的 react ;每次调用执行一个 switch/case,会产生一些额外的开销。

关于c# - Parallel.For 与 Parallel.Invoke,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37678065/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com