多线程是否会提高单处理器的计算速度

Har*_*sha 21 c# performance multithreading

在单个处理器上,多线程是否会提高计算速度.众所周知,多线程用于提高用户响应能力,并通过分离UI线程和计算线程来实现.但是让我们谈谈控制台应用程序.多线程是否会提高计算速度.当我们通过多线程计算时,我们是否能更快地得到计算结果.

那么在多核上,多线程会不会增加速度.

请帮我.如果您有任何材料可以了解有关线程的更多信息.请发布.

编辑:我被问到一个问题,在任何给定的时间,只允许一个线程在单个核心上运行.如果是这样,为什么人们在控制台应用程序中使用多线程.

哈尔莎,提前谢谢

Cox*_*oxy 20

总的来说,不,它不会加速任何事情.

据推测,总体上正在完成相同的工作,但现在存在额外线程和上下文切换的开销.

在具有超线程(两个虚拟处理器)的单个处理器上,答案变为"可能".

最后,即使只有一个CPU,也许某些线程可以推送到GPU或其他硬件?这有点远离"单处理器"场景,但在技术上可以通过单核PC上的多线程实现速度提升.

编辑:您的问题现在提到多核计算机上的多线程应用程序.同样,一般来说,这将为您的计算提供整体速度提升.然而,增加(或缺少)将取决于算法的可并行性,内存和高速缓存的争用,以及程序员在编写没有锁定或饥饿问题的并行代码时的技能.


And*_*nov 13

1个CPU上的几个线程:

  • 如果继续使用另一个线程而不是等待I/O绑定操作,可能会提高性能
  • 如果假设线程太多并且上下文切换浪费了工作,则可能会降低性能

N CPU上的几个线程:

  • 如果你能够以独立的方式削减工作并以独立的方式处理它们,可能会提高性能
  • 如果你严重依赖线程和总线之间的通信成为一个botleneck可能会降低pefromance.

所以实际上它是特定于任务的 - 你可以很容易地将一件事情平行,而对其他人来说几乎是不可能的.也许这对于新人来说有点高级阅读,但在C#世界中有两个关于这个主题的重要资源:


Ste*_*eve 8

你的计算是做什么的?您将无法使用,如果它的处理器多线程的约束,加快它,但如果由于某种原因,你的计算写入到磁盘或等待一些其他类型的IO的您可以使用线程来提高性能.但是,当你说"计算"时,我认为你的意思是某种处理器密集型算法,因此添加线程不太可能有所帮助,甚至可能会因为线程之间的上下文切换增加额外的工作而减慢速度.


Bri*_*sen 5

如果任务是计算绑定的,则线程不会使其更快,除非计算可以分成多个独立的部分.即便如此,如果您有多个可用内核,您也只能获得任何性能提升.从问题的背景来看,它只会增加开销.

但是,您可能仍希望在单独的线程上运行任何复杂且长时间运行的计算,以使应用程序保持响应.