在什么情况下使用线程对顺序程序有利?



标题很好地概括了我的问题。"在什么情况下使用线程有利于顺序程序"?

原因很多,而且有点复杂。所以我尽量做到最珍贵。

每个程序都可以并行化,但有时这样做并不值得。

多线程的最大好处是可以使用所有的内核。这可以导致性能的提高。在最理想的情况下,使用两个内核处理一个问题将使执行速度提高一倍。但在现实中,这种加速将被线程的开销所减少:

一般间接费用:

  • 线程启动/停止
  • <
  • 交流/同步/gh>

要忽略启停开销,线程的生命周期应该尽可能长。

通信/同步部分是主要问题。这里有很多复杂的东西。简而言之:避免/减少线程之间的通信。每个线程应该尽可能地独立工作。

基本上是开销和并行性之间的权衡。所以关键问题是:

  • 你有性能问题吗?
  • 你可以使用多核吗?
  • 您是否需要易于堆栈管理(->每个tcp连接打开)不同线程)
  • 你愿意测试多种解决方案吗(顺序vs.平行)?

查看更多信息:https://en.wikipedia.org/wiki/Gustafson%27s_law

最新更新