标题很好地概括了我的问题。"在什么情况下使用线程有利于顺序程序"?
原因很多,而且有点复杂。所以我尽量做到最珍贵。
每个程序都可以并行化,但有时这样做并不值得。
多线程的最大好处是可以使用所有的内核。这可以导致性能的提高。在最理想的情况下,使用两个内核处理一个问题将使执行速度提高一倍。但在现实中,这种加速将被线程的开销所减少:
一般间接费用:
- 线程启动/停止 <
- 交流/同步/gh>
要忽略启停开销,线程的生命周期应该尽可能长。
通信/同步部分是主要问题。这里有很多复杂的东西。简而言之:避免/减少线程之间的通信。每个线程应该尽可能地独立工作。
基本上是开销和并行性之间的权衡。所以关键问题是:
- 你有性能问题吗?
- 你可以使用多核吗?
- 您是否需要易于堆栈管理(->每个tcp连接打开)不同线程)
- 你愿意测试多种解决方案吗(顺序vs.平行)?
查看更多信息:https://en.wikipedia.org/wiki/Gustafson%27s_law