一旦我认为应该使用多个线程的唯一场合是需要进行IO处理。
但我听说没有IO处理它也很有用。因为它有助于占用更多的CPU资源。
根据我的理解,这将是
the process with more threads are given more CPU time.
这就是为什么多线程有助于提高即使在单核上的性能?
答案 0 :(得分:3)
在单个CPU上可以看到来自多个线程的更高性能的一个可能原因是CPU往往非常擅长指令重新排序并利用指令级并行性。与单个线程中的任何两个顺序指令相比,线程相对于彼此具有更少的数据和控制依赖性,因此它们为CPU和OS级调度器提供了更多的可能性,并且重新排序机制非常聪明。
不要忘记,以特定方式查看时,“内存中的读写”等内容仍然是“I / O”。这些操作相对较慢,并且现代CPU中的大部分流水线用于隐藏内存延迟 - 一次执行多个线程可能对填充时间有用,否则必须填充延迟时隙,其中存在数据危险单线程。
也就是说,线程通常不是提高性能的好方法,并且可以产生恰恰相反的效果。在某些问题上使用单个线程可以很容易地使所有可用内存带宽饱和。