SetThreadAffinityMask被忽略....任何想法?

时间:2009-04-18 05:29:48

标签: windows winapi setthreadaffinitymask

更新:我发现了这个问题 - 令人尴尬/具有讽刺意味的是,它是在错误的线程中调用SetThreadAffinity(),而不是主线程序(程序启动是凌乱的......)

现在一切正常,感谢所有的帮助!我已经给每个人一个赞成参加我的小调试会议。

3 个答案:

答案 0 :(得分:1)

这样调用会有什么不同吗?:

DWORD_PTR mask = 1; 
SetThreadAffinityMask(GetCurrentThread(), mask);

您的线程句柄是否具有必要的access rights?:

  

Windows Server 2003和Windows    XP / 2000 :句柄必须有   THREAD_SET_INFORMATION和   THREAD_QUERY_INFORMATION访问权限。

答案 1 :(得分:1)

虽然我使用它已经过了几个月,但我对该功能没有任何问题。

以下是您可能想要检查的一些事项:

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

答案 2 :(得分:1)

你所做的似乎是正确的,你可以试试 SetThreadIdealProcessor 吗?