多线程是否有意义?

Qui*_*Par 7 multithreading

我不想让这个主观......

如果不关心I/O和其他与输入/输出相关的瓶颈,那么我们是否需要编写多线程代码?从理论上讲,单线程代码将会更好,因为它将获得所有CPU周期.对?

如果它们是多线程的,JavaScript或ActionScript会有更好的表现吗?

我只是想了解多线程的真正需求.

Hen*_*man 13

我不知道你最近是否已经关注硬件趋势(过去5年),但我们正在走向多核世界.

一般的警钟是 "免费午餐结束"一文.

在双核PC上,单线程应用程序只能获得一半的CPU周期.并且CPU不再变得更快,摩尔定律的一部分已经死亡.

  • 摩尔定律仅涉及芯片上晶体管的密度.它似乎适用于速度,因为晶体管随着它们变小而变得更快,直到互连延迟成为主导.多个核心是晶体管数量的增加,因此摩尔定律仍然有效. (3认同)
  • "在双核PC上,单线程应用程序只能获得一半的CPU周期." - 如果您正在运行多个受CPU限制的应用程序,请不要这样做 CPU的另一半将被很好地使用.并非每个应用都必须是多线程的,以便在他们的环境中实现良好的用户体验,如果他们实际上一次运行多个应用程序. (3认同)

S.C*_*sen 8

用Herb Sutter的话来说,免费的午餐结束了,即计算的未来表现路径将是更多核心而不是更高的时钟速度.问题是添加更多内核通常不会扩展非多线程软件的性能,即使这样,它也完全取决于多线程编程技术的正确使用,因此多线程是一个大问题.

另一个显而易见的原因是维护一个响应式GUI,例如当你点击一个按钮启动大量计算,或者可能需要一段时间的I/O操作时,就像你自己指出的那样.


Bob*_*ore 7

这些天我使用多线程的主要原因是在程序执行耗时的过程中保持UI响应.当然,它不是高科技,但它让用户满意:-)