2013-09-25 15 views
0

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

#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) 
Смежные вопросы