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

yd1*_*yd1 2 c++ windows cpu-cores

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

我找到了这篇文章,但它指的是 Linux 中的 C(我在 Windows 上使用 Visual Studio)

另外,我使用的 Windows 版本有关系吗?

Pet*_*ter 5

可以使用Windows API函数SetThreadIdealProcessorEx()。此功能适用于Windows 7或更高版本。在较旧的系统上,可以使用SetThreadIdealProcessor(),但有一些限制。

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

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

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

也可能建议使用SetProcessorAffinityMask()它来指定进程可以运行的处理器,因为线程似乎不太可能在不在其父进程的亲和力掩码内的处理器上运行。

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