.NET 内核之间线程的移动

标签 .net multithreading multicore

跟进来自Multi-core usage, threads, thread-pools的问题.

Are threads moved from one core to another during their lifetime?

当然。想象一下你有三个 在双核系统上运行的线程。 给我一个公平的时间表,但不 涉及定期移动线程 核心之间。

这是我第一次访问这个网站,所以我想我没有足够的代表来发表评论。我决定提出一个新问题,引用我想评论的问题。

选择将线程移动到的核心的过程是怎样的?调度程序是否有一个需要处理时间的线程列表,当一个线程完成时,它会放入另一个线程?

此外,我想知道是否有关于线程在核心之间移动的说法的引用。或者它只是被认为是“常识”?

谢谢!

最佳答案

线程并不存在于特定的核心上,而是将其移动到另一个核心的过程。

操作系统只有一个准备执行的线程(和/或进程)列表,并将它们分派(dispatch)到任何可用的核心/CPU上。

也就是说,任何智能调度程序都会尝试尽可能在同一核心上调度线程 - 只是为了提高性能(数据更有可能位于该核心的缓存等中)

关于.NET 内核之间线程的移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1579002/

相关文章:

c# - 串口连续实时数据C#

java - ThreadLocal 与克隆

asp.net - 在 SQLDataSource 中使用字段名称作为选择参数

.net - Android 版 Mono 中的 Web 引用

c# - .netcore 2.2 Httpcontext 没有 SignInAsync

arm - 在 Zynq 上使用多核

Python:多核处理?

c# - 将 ASP.NET 网站管理工具功能引入网页

java - 由于守护线程,Jmeter 未完成

algorithm - 通过多核处理器在 RTOS 中进行群组调度