可以将 Windows 配置为仅使用单个硬件线程。过去几年的每台机器似乎至少都是双核的,但一些计时错误只有在线程连续执行时才会重现。我对 Windows Vista 特别感兴趣。
答案1
大卫,让我们首先解决你的直接问题:如何将 Windows Vista 限制为一个核心。
我认为有两种方法:
(a) 在 Hyper-V 上的虚拟机中运行 Vista,并只为虚拟机提供一个逻辑处理器。这样您就可以充分利用机器的其余部分。
(b)或者,您可以使用/numproc=1boot.ini 中的选项强制机器使用单个处理器。您可以通过 msconfig 进行配置。
- 单击“开始”,单击“运行”,键入 msconfig,然后单击“确定”。
- 单击“启动”选项卡。
- 点击“高级选项…”
- 单击选中“处理器数量”复选框,然后选择“1”。
- 单击“确定”两次,然后重新启动计算机。
替代文本 http://i39.tinypic.com/141789i.png
但也许这足以限制只是你的程序然后设置处理器亲和性是最佳答案。这可以通过配置或直接从您的流程代码中实现。
除此之外,你可能还需要考虑使用高级多线程调试工具,例如英特尔的线程检查器如果这适用于您的环境。
答案2
您正在寻找的是如何设置“进程亲和力”,以及如何设置它取决于您正在启动的程序以及如何启动它。
我在 stack overflow 上看到了这个答案: stackoverflow.com/questions/827754/....
答案3
另外,许多机器可以在 BIOS 中禁用 SMP(和超线程,如果相关)。
时间错误(或者竞争条件的常见子集)似乎在多核机器上更容易重现。
答案4
您可能希望 boot.ini 中的 /onecpu 开关如下所示: http://support.microsoft.com/kb/170756