Я хочу знать количество ядер процессора, поэтому я знаю этот код
SYSTEM_INFO siSysInfo;
DWORD getProcessorNum()
{
GetSystemInfo(&siSysInfo);
return siSysInfo.dwNumberOfProcessors;
}
Он возвращает 4. но когда я проверяю свой результат с помощью CPUZ, он возвращает 2Cores 4Thraeds
os Я пробую __cpuid с этим кодом
неподписанные регистры[4];
__cpuid(regs,4);
ядра = ((regs[0] >> 26) & 0x3f) + 1;cout ‹‹ " ядер процессора: " ‹‹ ядер ‹‹ endl;
Он возвращает 8 ядер.
Не могли бы вы сказать мне, мой код неверен?
Я запускаю этот код с помощью MSVC++2010 на платформе Win7x64 с процессором i3.
__cpuid(regs,0)
, и данным в руководствах для разработчиков Intel/AMD (отредактируйте: я вижу, что вы изменили комментарий/удалили его) - person Necrolis   schedule 25.11.2011__cpuid(regs,0)
возвращает действительные индексы для использования с идентификатором процессора), что касается того, почему он получает 8, i3 имеет 4 потока исполнение, и его удваивает HT (как вы говорите). - person Necrolis   schedule 25.11.2011