Stopwatch在多处理器系统上有一个错误:
在多处理器计算机上,运行该线程的处理器无关紧要。但是,由于BIOS或硬件抽象层(HAL)中的错误,您可以在不同的处理器上获得不同的时序结果。要指定线程的处理器关联,请使用ProcessThread.ProcessorAffinity方法。
我试图通过将专用线程绑定到特定处理器来解决这个问题。所以,假设有4个处理器,当前进程被绑定到处理器1和2.我的代码将线程绑定到处理器1.但是当用户将我的进程绑定到仅在处理器2和3上运行时会发生什么?我绑定到处理器1的线程会发生什么?
我尝试查看SetThreadAffinityMask和SetProcessAffinityMask Win32 API(以及.NET Process.ProcessorAffinity和ProcessThread.ProcessorAffinity),但没有关于此特定情况的说明。由于某种原因,也没有GetThreadAffinityMask API ....
答案 0 :(得分:1)
系统不允许您指定阻止线程运行的关联。
因此,简而言之,您无需担心。但是,您尝试设置亲缘关系以便线程被阻止,系统会阻止它发生。
要读取线程关联掩码,必须调用返回前一个掩码的SetThreadAffinityMask
。