限制多线程应用程序的处理器数量

时间:2013-12-02 10:23:44

标签: c++ windows multithreading

我正在开发一个多线程应用程序,它在我的开发系统上运行良好,它有8个核心。当我在具有2个内核的PC上运行它时遇到了一些同步问题。

除了关闭超线程之外,还有任何方法可以限制应用程序可以使用的内核数量,这样我就可以模拟单核和双核环境进行测试。调试。

我的应用程序是使用Visual Studio 2010用C ++编写的。

2 个答案:

答案 0 :(得分:3)

我们现在总是在虚拟机中进行测试,因为设置具有特定限制的特定环境非常容易。

例如,VMWare可以轻松地限制使用的处理器数量,存储的内存,硬盘大小,USB或软盘或打印机的存在以及各种其他奇妙的东西。

事实上,我们有脚本只需按一下按钮即可完成所有工作,从将VM恢复到已知的初始状态,然后启动它,通过网络安装代码,运行测试周期然后移动结果也是网络上的分析机器。

它大大加快并简化了测试制度。

答案 1 :(得分:2)

您需要SetProcessAffinityMask功能或SetThreadAffinityMask功能。

前者适用于整个过程,后者适用于特定的线程。

您还可以通过Windows任务管理器限制活动核心。右键单击流程名称,然后选择“设置亲和力”。