我正在开发一个多线程应用程序,它在我的开发系统上运行良好,它有8个核心。当我在具有2个内核的PC上运行它时遇到了一些同步问题。
除了关闭超线程之外,还有任何方法可以限制应用程序可以使用的内核数量,这样我就可以模拟单核和双核环境进行测试。调试。
我的应用程序是使用Visual Studio 2010用C ++编写的。
答案 0 :(得分:3)
我们现在总是在虚拟机中进行测试,因为设置具有特定限制的特定环境非常容易。
例如,VMWare可以轻松地限制使用的处理器数量,存储的内存,硬盘大小,USB或软盘或打印机的存在以及各种其他奇妙的东西。
事实上,我们有脚本只需按一下按钮即可完成所有工作,从将VM恢复到已知的初始状态,然后启动它,通过网络安装代码,运行测试周期然后移动结果也是网络上的分析机器。
它大大加快并简化了测试制度。
答案 1 :(得分:2)
您需要SetProcessAffinityMask功能或SetThreadAffinityMask功能。
前者适用于整个过程,后者适用于特定的线程。
您还可以通过Windows任务管理器限制活动核心。右键单击流程名称,然后选择“设置亲和力”。