1
A
回答
2
一般来说,在多核心盒子上,没有。如果可以使用相同的内核,那么利用仍在L1缓存中的数据可能会获得优势(由其他人发布),但是明确强制内核关联的缺点是不好的:
线程X是创建并绑定到核心0. 线程X运行。 系统调用的线程X块,可能用于I/O或线程间通信。 操作系统在内核0上运行线程Y. 线程X在内核1,2和3空闲时准备就绪。
现在呢?
不必要地抢占线程Y?移动Y的开销,以及如果Y也绑定到核心0,那该怎么办? 再次阻止X直到Y块?防止X在可以做时取得进展。
2
它依赖于操作系统, 然而,一般来说,操作系统试图让线程在相同的内核上运行,因为线程所使用的数据在内核中被缓存的可能性更高,从而提高了性能。
它都基于线程调度机制。
相关问题
- 1. TaskScheduler始终运行在同一线程上
- 2. iframe是否与所有者在同一个线程上运行?
- 3. 如何在不同内核上运行不同的线程?
- 4. 是否有可能在一个以上的CPU内核上同时执行单线程程序?
- 5. 在Python中加入一个始终运行的线程
- 6. 如何在同一个内核上并行多次运行相同的进程?
- 7. onTouch(),onClick()是否在同一个线程中按顺序运行?
- 8. 在两个核心上运行一个线程
- 9. Bash:在多个内核上运行相同的程序
- 10. 同步方法是否在UI线程(Android)的不同线程上运行?
- 11. ASP.NET请求始终在同一个线程上执行BeginRequest和EndRequest?
- 12. 我如何确保我的线程/进程在不同内核上运行
- 13. 如何使协程始终在同一个线程中工作?
- 14. UNIX初始化进程是否始终运行
- 15. System.Windows.Forms.Timer是否在与UI不同的线程上运行?
- 16. 一个线程始终运行,没有其他线程的机会
- 17. Python:fork和exec一个进程在不同的终端上运行
- 18. 确保所有Linux系统线程在内核上运行0
- 19. 在四个并行内核上运行不同的Powershell命令
- 20. 事件是否始终在氮气的相同过程中运行?
- 21. 内核线程是否被scheduller调度?
- 22. 线程池是否可以在单线程函数上运行?
- 23. 在IO上等待的线程是否也会阻塞内核?
- 24. 在多个GPU上运行OpenCL内核?
- 25. 子进程是否总是在父进程内运行?是否...线程...?
- 26. 线程是否可运行?或上课?如何在后台运行线程?
- 27. SoapClient是否像WebClient一样在UI线程上运行?
- 28. 什么是“内核(唯一)线程”而不是“内核级线程”?
- 29. 是否可以跨越OpenCL内核在CPU和GPU上同时运行
- 30. WCF是否在多个线程上运行会话?
如果只有一个CPU核心,是的。对于多核机器来说,答案是“通常不是”(核心之间的线程迁移是可能的),但OS /实现依赖于此。在某些OS/libs/pthreads中有“setaffinity”调用来将某些线程绑定到可用CPU核心的某个子集。 – osgx 2013-02-20 12:39:07
简短回答:不,线程将按计划程序认为合适的方式跳转核心。如果您对这些细节感到好奇(至少对于Windows),您可能需要查看[Windows Internals第6版](http://www.amazon.com/dp/0735648735)(ISBN:978-0735648739)。第5章的一半致力于深入解释线程调度。 – 2013-02-20 12:39:20