我想知道如何在Visual Studio中强制使用C ++编写程序,在特定的核心/核心上运行(在具有多个核心/核心的计算机上)。
我找到了this文章,但在Linux中引用了C(我在Windows上使用Visual Studio)
另外,我使用的Windows版本是不是很重要?
答案 0 :(得分:3)
可以使用Windows API函数SetThreadIdealProcessorEx()
。此功能适用于Windows 7或更高版本。在较旧的系统上,可以使用SetThreadIdealProcessor()
,尽管有一些限制。
根据第一个链接的评论
指定线程理想处理器为调度程序提供有关线程首选处理器的提示。调度程序尽可能在线程的理想处理器上运行线程。
我不知道任何强制调度程序在指定处理器上运行线程的函数。因此,提供调度程序将尝试采取行动的提示可能是您最接近满足要求的提示。
也可能建议同时使用SetProcessorAffinityMask()
,这可以指定进程可以运行的处理器,因为线程似乎不可能在不在其父级的处理器上运行进程的亲和力掩码。
请仔细阅读这些功能的文档,因为系统本身可以对进程可能运行的处理器施加限制。