Windows SetThreadAffinityMask被忽略…有什么想法吗?

Windows SetThreadAffinityMask被忽略…有什么想法吗?,windows,winapi,setthreadaffinitymask,Windows,Winapi,Setthreadaffinitymask,更新:我发现了问题——令人尴尬/讽刺的是,它在错误的线程中调用SetThreadAffinity(),而不是在主线程中(程序启动很混乱…) 现在一切都好了,谢谢你的帮助!参加我的小调试会议,我已经给了每个人一张赞成票。这样称呼会有什么不同吗 DWORD_PTR mask = 1; SetThreadAffinityMask(GetCurrentThread(), mask); 您的螺纹手柄是否具有必要的扭矩 Windows Server 2003和Windows XP/2000:手柄必须具有

更新:我发现了问题——令人尴尬/讽刺的是,它在错误的线程中调用SetThreadAffinity(),而不是在主线程中(程序启动很混乱…)


现在一切都好了,谢谢你的帮助!参加我的小调试会议,我已经给了每个人一张赞成票。

这样称呼会有什么不同吗

DWORD_PTR mask = 1; 
SetThreadAffinityMask(GetCurrentThread(), mask);
您的螺纹手柄是否具有必要的扭矩

Windows Server 2003和Windows XP/2000:手柄必须具有 线程设置信息和 线程\u查询\u信息访问权限


虽然我已经用了好几个月了,但是我对这个函数没有任何问题

以下是一些您可能需要检查的内容:

  • 没有冲突的SetProcessAffinityMask和SetThreadAffinityMask
  • 如果处理器2上有一个线程,那么程序的其余部分可能使用处理器1
  • 显示以测试其是否在正确的CPU上运行

您所做的似乎是正确的,您可以尝试一下吗?

如果我没有权限,我想它会返回一个错误。除此之外,SetProcessAffinityMask()工作得非常好……您有多少线程?有多少处理器?您是为多个线程设置关联,还是仅为一个线程设置关联?我有两个CPU,我只为一个线程设置关联。其他线程目前甚至没有运行。请不要删除原始问题。人们可能也有同样的问题。那么我建议你在Vista上试试。