Windows 一个线程在其整个生命周期中是否在同一个CPU/内核上运行?

Windows 一个线程在其整个生命周期中是否在同一个CPU/内核上运行?,windows,multithreading,Windows,Multithreading,在多处理器计算机上的Windows中,线程是否在其生命周期内更改CPU/内核 线程是否在其生命周期内更改CPU/内核 它可以。它不一定会改变,但是没有什么可以阻止操作系统在内核之间移动线程 如果您需要控制线程的操作,Windows API确实可以通过或和对此进行一些控制。是,默认情况下为。如果要将线程限制为特定的一个或多个内核,则可以设置线程关联性。如果该线程的生命周期较长且有许多阻塞调用,例如池线程或应用生命周期线程,则几乎可以肯定它会在多个不同的内核上运行-当它准备就绪时,如果有可用的内核,

在多处理器计算机上的Windows中,线程是否在其生命周期内更改CPU/内核

线程是否在其生命周期内更改CPU/内核

它可以。它不一定会改变,但是没有什么可以阻止操作系统在内核之间移动线程


如果您需要控制线程的操作,Windows API确实可以通过或和对此进行一些控制。

是,默认情况下为。如果要将线程限制为特定的一个或多个内核,则可以设置线程关联性。

如果该线程的生命周期较长且有许多阻塞调用,例如池线程或应用生命周期线程,则几乎可以肯定它会在多个不同的内核上运行-当它准备就绪时,如果有可用的内核,操作系统会将其分派到空闲内核上,或者可以抢占在某个内核上运行的另一个优先级较低的线程,以允许新准备好的线程运行

即使该线程的生命周期很短且CPU密集,也不能保证它不会在某个阶段被更高优先级的线程抢占,该线程将准备就绪,并可能在稍后调度到另一个内核


若有必要的话,可以随意调整优先级和线程关系。如果您通过此操作生成了任何显示整体性能改进的数字,请告知我们:)

谢谢您的链接。但这并不能回答这个问题。线程可以在任何处理器上运行,但它可以在其生命周期内更改处理器。我认为您缺少的是调度程序连续运行,而不仅仅是在线程创建时。我现在明白了。。。忽略我的上述评论。可能重复的