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 つのスレッドがある場合、プログラムの残りの部分はプロセッサ 1 を使用している可能性があります。
  • GetCurrentProcessorNumberを表示して、正しい CPU で実行されているかどうかをテストします。
于 2009-04-18T07:47:17.660 に答える
1

あなたがしていることは正しいようです。代わりにSetThreadIdealProcessorを試してみてください。

于 2009-04-18T07:59:39.863 に答える