我想知道是否可能或建议使用Parallel.Invoke
方法的多个层,或者它是否可能导致问题/减缓应用程序。
这是最好的做法吗?
Parallel.Invoke(
() => Invoke("orange"),
() => Invoke("apples"),
() => Invoke("pears")
);
public static void Invoke(string name)
{
Parallel.Invoke(
() => test.testapp(name),
() => test.testapp(name),
() => test.testapp(name)
);
}
答案 0 :(得分:0)
这是可能的,但可能没有任何好处 - 这实际上取决于这些工作正在做什么。
如果它们本质上是异步任务(例如在数据库或外部API上)可以并行执行,则可能是有益的。但是,如果他们是CPU密集型任务,那么您可能只是为调度程序提供额外的工作而没有任何实际好处。
有一篇文章here,其中包含使用并行库的一些基准测试,它可能会让您知道何时使用它。
此测试的结果:
模拟调用外部资源:
into: 'admin'
CPU密集型任务:
Not Nested: 00:00:14.6155628
Nested: 00:00:09.0907248