是否应该使用任意数量的线程来获得应用程序中的最佳性能?

时间:2015-06-17 09:12:40

标签: c# multithreading backgroundworker

我听说应用程序中有许多线程用于获得最佳性能。我听说当线程数增加时,性能会提高到一点,之后会开始减少。对于android应用程序,限制类似于3或4。

有人能解释一下吗?

目前我正在开发一个C#独立应用程序,在那里我使用了大约50个后台工作程序。这对系统的性能有何影响?

2 个答案:

答案 0 :(得分:7)

对此没有单一答案。这取决于您的应用正在做什么,以及瓶颈是什么。如果你的应用程序正在进行大量的CPU工作并且正在盯住设备,那么“核心数量”是你的限制因素(超出这个范围只会增加切换);如果它主要在磁盘/网络上等待,那么1可能更多而不是足够。

添加线程不是一个神奇的子弹 - 可以是正面的也可以是负面的。

答案 1 :(得分:0)

如前所述,对此没有明确的答案,但我可能会在这里分享一些经验。 如果您正在使用独立客户端应用程序,那么通常最好有一个用于核心功能的线程和用户界面以及单独的线程来执行诸如素数分解之类的操作。关键是要保持UI响应,即使你的后台工作人员真的忙着处理数字。

除此之外,将任务分配给新线程可能是一个好主意,这样您就可以正确地管理它们,但只有在有很多不同的任务要跟踪并且您已经知道的情况下我才建议这样做其中一些线程可能遇到无限循环,或者你想要一种方法来关闭它们而不停止整个应用程序。

开始了解您可能想要查看的内容的理论方面:Amdahl's Law

最好的问候, garglblarg:>