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

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

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

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

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

1 ответ

Решение

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

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

SetThreadAffinityMask(GetCurrentThread(),1) 

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

SetProcessAffinityMask(GetCurrentProcess(),1)
Другие вопросы по тегам