繁体   English   中英

为什么要为线程设置ProcessorAffinity?

[英]Why set the ProcessorAffinity for a thread?

我一直无法找到一个很好的解释,为什么多线程可执行文件想要为每个线程设置ProcessorAffinity。 对我来说,似乎这是试图覆盖CLR /操作系统; 我认为我不够聪明的事情。

为什么我要参与为多核系统上的线程设置ProcessorAffinity?

如果你告诉一个线程以非设置的亲和力运行,那么它将被允许在任何核心上运行。 然而,这意味着,当一个核心忙时,它会将您的线程移动到另一个核心,这种停止和可能的移动称为上下文切换 在大多数情况下,你永远不会注意到它,但是,在像游戏机这样的情况下,上下文切换可能是一个非常昂贵的过程。

在这些情况下,最好将音频循环和视频循环之类的东西移动到锁定到该核心的“私有”核心,因此不会切换,从而提供可能的优化。

只有非常特定类型的应用程序才能真正受益于手动线程关联的使用,主要是具有长期并行进程的应用程序。 我可以想象它被用于病毒扫描程序或Seti @ Home等数学繁重的应用程序。

另一个理论上的优点是,如果您有多次运行的小进程,处理器可以使用其缓存。 但同样,实际上你需要一种非常特殊的应用程序才能使差异显着。

我从来没有需要打扰它。 通常操作系统最了解。

处理器缓存。

并且可以用它来节流。
可能具有较低优先级的进程,您不希望占据主导地位。
在4处理器的机器上可以将其限制为一个处理器。
节流也可以通过线程优先级完成。
只有在进程受益于缓存时才会使用此方法。
我喜欢它,因为在任务管理器中我可以看到它锤击一个CPU。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM