单核cpu上多线程的含义
the meaning of multiple threading on single core cpu
我曾经认为只有在需要IO处理的情况下才应该使用多线程。
但是我听说没有IO处理也很有用。因为它有助于占用更多的CPU资源。
在我的理解中,这应该是
the process with more threads are given more CPU time.
这就是为什么多线程有助于提高性能,即使在单核?
在单个CPU上使用多个线程可以看到更好的性能的一个可能原因是CPU往往非常擅长指令重排序和利用指令级并行性。与单个线程中的任何两个顺序指令相比,线程之间的数据和控制依赖关系更少,因此它们为CPU和操作系统级别的调度器提供了更多的可能性,并且重新排序机制非常聪明。
不要忘记,像"在内存中读写"这样的事情在以特定的方式查看时仍然是"I/O"。这些都是相对较慢的操作,并且现代cpu中的大部分流水线都用于隐藏内存延迟——同时执行多个线程对于填补时间是有用的,否则在单个线程中有数据危险的延迟槽必须填充时间。
也就是说,线程通常不是提高性能的好解决方案,而且可能产生恰恰相反的效果。在某些问题上,使用单个线程很容易使所有可用的内存带宽饱和。相关文章:
- 在C++中使用cURL和多线程
- 多线程双缓冲区
- 为什么我的多线程作业队列崩溃
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 试图创建一个多线程程序来查找0-100000000之间的总素数
- 为什么一个向量上的多线程操作很慢
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 全局变量 多读取器 一个写入器多线程安全?
- boost::文件系统::recursive_directory_iterator多线程安全
- C++从多线程 CPU 程序迁移到 GPU
- C++多线程算法创建在同一 CPU 线程上运行的多个线程
- 我的多线程游戏始终为100%CPU.如何管理线程活动以减少CPU负载
- 在每个主机线程(多线程 CPU)上创建一个 cuda 流
- 考虑 CPU 提升模式的多线程超线性性能实现
- C++:多线程设计,每个线程都应该同时执行I/O和CPU密集型任务
- 单核cpu上多线程的含义
- c++ pthread多线程2倍Intel Xeon X5570,四核cpu在亚马逊EC2 HPC ubuntu实例
- 多线程-如何尽可能多地使用CPU
- 多线程CPU到GPU使用CUDA 7.0/VS2012 c++ /CLI/OpenCV
- 为什么在Mac OS X上,当在线程中使用system()时,多线程C程序会被强制分配给单个CPU