使c++程序在windows中的特定核心上运行

2024-03-01

我想知道如何强制 Visual Studio 中的 C++ 程序在特定的核心上运行(在拥有多个核心的计算机上)。

i found this https://stackoverflow.com/questions/8326427/how-to-force-a-c-program-to-run-on-a-particular-core/文章,但 in 指的是 Linux 中的 C(我在 Windows 上使用 Visual Studio)

另外,我使用的 Windows 版本重要吗?


可以使用Windows API函数SetThreadIdealProcessorEx() https://msdn.microsoft.com/en-us/library/windows/desktop/dd405517(v=vs.85).aspx。此功能适用于Windows 7或更高版本。在较旧的系统上,可以使用SetThreadIdealProcessor() https://msdn.microsoft.com/en-us/library/windows/desktop/ms686253(v=vs.85).aspx,尽管还有一些限制。

这是根据第一个链接的注释

指定线程理想处理器向调度程序提供有关线程首选处理器的提示。如果可能,调度程序会在线程的理想处理器上运行线程。

我不知道有任何函数强制调度程序在指定处理器上运行线程。因此,给出一个提示(调度程序将尝试执行该提示)可能是最接近满足您的要求的方法。

可能建议也使用SetProcessorAffinityMask() https://msdn.microsoft.com/en-us/library/windows/desktop/ms686223(v=vs.85).aspx同样,它可以指定进程可以运行的处理器,因为线程似乎不太可能在不在其父进程的亲和力掩码内的处理器上运行。

仔细阅读这些函数的文档,因为系统本身可以对进程可以运行的处理器施加限制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使c++程序在windows中的特定核心上运行 的相关文章

随机推荐