1

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

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

4

3 回答 3

1

像这样称呼它有什么不同吗?:

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

您的线程句柄是否具有必要的访问权限?:

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

于 2009-04-18T05:43:30.110 回答
1

尽管我使用它们已经有几个月了,但我对该功能没有任何问题。

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

  • 没有冲突的 SetProcessAffinityMask 和 SetThreadAffinityMask
  • 如果处理器 2 上有一个线程,那么程序的其余部分可能正在使用处理器 1
  • 显示GetCurrentProcessorNumber以测试它是否在正确的 CPU 上运行。
于 2009-04-18T07:47:17.660 回答
1

你在做什么似乎是正确的,你可以试试SetThreadIdealProcessor吗?

于 2009-04-18T07:59:39.863 回答