【问题标题】:In what circumstances would using threads benefit a sequential program?在什么情况下使用线程会使顺序程序受益?
【发布时间】:2016-10-17 00:13:52
【问题描述】:

标题很好地总结了我的问题。 “在什么情况下使用线程会使顺序程序受益”?

【问题讨论】:

  • 您的问题非常广泛。一般答案是:“如果顺序程序中有可以并行运行的代码块,将会获得好处”。但这可以扩展到许多文本段落。

标签: multithreading operating-system sequential


【解决方案1】:

有很多原因,而且有点复杂。所以我尽量让自己变得珍贵。

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

多线程的最大好处是可以使用所有内核。这可以导致性能的改进。在最佳情况下,让 2 个内核处理一个问题将使执行速度加倍。但实际上这种加速会因线程的开销而降低:

一般开销:

  • 线程启动/停止
  • 通信/同步

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

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

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

  • 您有性能问题吗?
  • 您可以访问多核吗?
  • 您是否需要易于堆栈管理(->每个 TCP 连接在 不同的线程)
  • 您是否愿意测试多种解决方案 (顺序与并行)?

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多