SetThreadAffinityMask не имеет никакого эффекта

Я хочу, чтобы тестовая программа работала только на CPU1, поэтому я пишу такой код

#include <iostream>
#include <windows.h>

int main(){
::SetThreadAffinityMask(::GetCurrentProcess(),1);
while(1)
;
return 0;
}

но когда я открываю диспетчер задач, я обнаруживаю, что CPU1 не используется в полной мере, и процент его использования постоянно меняется. Почему? CPU1 должен использоваться на 100 процентов?
извините за мой английский.

0

Решение

SetThreadAffinityMask устанавливает близость нити, а не всего процесса. Если вы проверите возвращаемое значение, вы должны увидеть, что SetThreadAffinityMask терпит неудачу. Чтобы получить текущий поток, используйте GetCurrentThread() не GetCurrentProcess(),

т.е. измените свой код на

SetThreadAffinityMask(GetCurrentThread(),1)

Если вы хотите установить сходство всего процесса, используйте

SetProcessAffinityMask(GetCurrentProcess(),1)
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]