我在旋转等待的地方有延迟关键代码。我想在专用核心上运行它(我总共有 12 个核心,所以可以只为该任务花费一个核心)。我试图以这种方式完成它:
new Thread(Work).Start();
private void Work()
{
Process Proc = Process.GetCurrentProcess();
ProcessThread Thread = Proc.Threads[0];
var AffinityMask = 0x0002; // use only the second processor, despite availability
Thread.ProcessorAffinity = (IntPtr)AffinityMask;
while (true)
{
Iterate();
}
}
我期待在设置 ProcessorAffinity 后,我的线程将始终在第二个核心上工作,所以我也将 100% 在第二个核心上。但是在任务管理器中,我看不到任何“100”个占用的核心。为什么?如何在专用核心上启动自旋等待线程?
现在更新我认为这可能是错误的Proc.Threads[0]
?我需要有current
线程而不是0
线程?