跟进来自Multi-core usage, threads, thread-pools的问题.
当然。想象一下你有三个 在双核系统上运行的线程。 给我一个公平的时间表,但不 涉及定期移动线程 核心之间。 block 引用>Are threads moved from one core to another during their lifetime?
这是我第一次访问这个网站,所以我想我没有足够的代表来发表评论。我决定提出一个新问题,引用我想评论的问题。
选择将线程移动到的核心的过程是怎样的?调度程序是否有一个需要处理时间的线程列表,当一个线程完成时,它会放入另一个线程?
此外,我想知道是否有关于线程在核心之间移动的说法的引用。或者它只是被认为是“常识”?
谢谢!
最佳答案
线程并不存在于特定的核心上,而是将其移动到另一个核心的过程。
操作系统只有一个准备执行的线程(和/或进程)列表,并将它们分派(dispatch)到任何可用的核心/CPU上。
也就是说,任何智能调度程序都会尝试尽可能在同一核心上调度线程 - 只是为了提高性能(数据更有可能位于该核心的缓存等中)
关于.NET 内核之间线程的移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1579002/