ボタンを押してスレッドを実行するたびに、スレッドのアフィニティを特定のマスクに設定しようとしています。ウィンドウを開いた後に初めて実行すると機能しますが、その後は機能しません。ただし、私のOutputDebugString
コードは、変更されたことを示唆する出力を生成します。使ってみましCloseHandle()
たが、効果はないようです。他に何かありますか?
void CSMPDemoDlg::OnBnClickedButton1()
{
// Start thread
DWORD_PTR affinityMask = (static_cast<DWORD_PTR>(1) << NumberOfCores ) - 1;
HANDLE WorkThreadHandle = CreateThread(NULL, 0, WorkThread, &tp, 0, NULL);
DWORD_PTR z = SetThreadAffinityMask(WorkThreadHandle, affinityMask);
if (z!=0) {
char bb[100];
sprintf_s(bb, 100, "Affinity changed from %d to %d", z, affinityMask);
OutputDebugString(bb);
}
}