0

曾经我认为应该使用多个线程的唯一场合是需要 IO 处理时。

但我听说它在没有 IO 处理的情况下也很有用。因为它有助于占用更多的CPU资源。

据我了解,这将是

the process with more threads are given more CPU time.

这就是为什么即使在单核上多线程也有助于提高性能的原因吗?

4

1 回答 1

3

您可以看到单个 CPU 上的多个线程具有更高性能的一个可能原因是 CPU 往往非常擅长指令重新排序和利用指令级并行性。与单个线程中的任何两条顺序指令相比,线程之间的数据和控制依赖关系更少,因此它们为 CPU 和操作系统级别的调度程序和重新排序机制提供了更多的可能性,非常聪明。

不要忘记,当以特定方式查看时,诸如“在内存中读取和写入”之类的东西仍然是“I/O”。这些是相对较慢的操作,并且现代 CPU 中的大部分流水线用于隐藏内存延迟 - 一次执行多个线程对于填充时间很有用,否则这些时间必须用延迟槽填充,其中存在数据危险一个线程。

也就是说,线程通常不是提高性能的好解决方案,并且可能会产生恰恰相反的效果。在某些问题上使用单个线程很容易使所有可用的内存带宽饱和。

于 2013-06-07T01:53:50.430 回答