我正在为 CPU 开发一个小型测试/监控工具。它使用 OpenHardwareMonitor 和 Timer 来轮询系统并获取 CPU 温度、频率、PPT 等,还可以对 CPU 进行基准测试。当我运行单核测试时,我将亲和力设置为特定的核心,这就是问题出现的地方。当被测试的核心处于满负荷状态时,监控会停止,尽管其余核心都处于空闲状态,这意味着它为整个程序设置了亲和力。我使用 ThreadAffinity 循环遍历内核:
Thread.BeginThreadAffinity();
SetThreadAffinityMask(GetCurrentThread(), new IntPtr(intptrVal));
PiTest();
Thread.EndThreadAffinity();
我也尝试使方法异步,但它不能解决问题。有没有办法为现在正在测试的特定核心设置基准方法,同时允许程序的其余部分,包括监视计时器/方法使用任何其他核心?如果不是,如何以其他方式解决?