【发布时间】:2012-08-10 10:05:01
【问题描述】:
我想为我的应用程序保留一个内核。在我的搜索中,我可以找到 dwProcessAffinityMask 来限制我的进程在我想要的内核上运行。但这并不 防止其他进程的线程也运行在“我的”核心上。
有没有办法禁止除我的进程/线程之外的任何(系统范围的)进程/线程使用特定的核心/处理器?
即使可以设置 SystemAffinityMask,这也无济于事,因为这也会禁止我的进程/线程在该处理器/内核上执行。
【问题讨论】:
-
你想要达到什么目的?如果您只想要 Hard-RealTime,不妨看看实时系统或附加组件(例如 Xenomai)。
-
好提示!但是我这里故意放了 windows 标签。
-
不确定这有多大可能。调度程序将决定哪个线程在哪个内核上运行。除非您可以操纵它,否则看不到您如何实现这一目标。
-
@Arno 所以我会推荐一些现成的 Windows RT 解决方案。除了处理器时间之外,还有其他方面与此相关。
-
在您的应用程序用户手册中,输入“此应用程序必须在专用的计算机上运行”。或者,如果您想要“终极响应能力”,请不要在桌面操作系统上运行它。其他人也表示怀疑,您的建议实际上会对任何人的“响应能力”有所帮助。如果您设法将一个内核“专用”给您的应用程序,则 I/O 中断、上下驱动程序、内核线程池等将不得不在其他内核上运行,因此对所有 I/O 强制执行处理器间通信。我会将您的请求视为可能会失败的“最后一次喘息”优化尝试。
标签: windows multithreading process