SetThreadAffinityMask игнорируется .... есть идеи? - PullRequest
1 голос
/ 18 апреля 2009

Обновление: я обнаружил проблему - достаточно смущающе / иронично, что он вызывал SetThreadAffinity () не в том потоке, а не в главном (запуск программы грязный ...)

Теперь все работает, спасибо за помощь! Я выразил всем поддержку за участие в моей небольшой отладочной сессии.

Ответы [ 3 ]

1 голос
/ 18 апреля 2009

У меня не было проблем с этой функцией, хотя прошло уже несколько месяцев с тех пор, как я их использовал.

Вот некоторые вещи, которые вы можете проверить:

  • Не иметь конфликтующих SetProcessAffinityMask и SetThreadAffinityMask
  • Если у вас один поток на процессоре 2, то остальная часть программы может использовать процессор 1
  • Показать GetCurrentProcessorNumber , чтобы проверить, работает ли он на нужном процессоре.
1 голос
/ 18 апреля 2009

То, что вы делаете, кажется правильным, не могли бы вы попробовать SetThreadIdealProcessor вместо этого?

1 голос
/ 18 апреля 2009

Имеет ли это такое значение?

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

Имеет ли ваш дескриптор потока необходимые права доступа ?:

Windows Server 2003 и Windows XP / 2000 : ручка должна иметь THREAD_SET_INFORMATION и THREAD_QUERY_INFORMATION права доступа.

...