Logische CPU-Zählung gibt 16 statt 4 zurück
Ich habe einen Intel Core i5-2450m (2 physische Prozessoren und 4 logische Prozessoren) und möchte einen Weg finden, um logische und physische Kerne auf AMD- und Intel-CPUs zu zählen. Aber nach ein paar Suchen habe ich etwas Merkwürdiges bemerkt. Anstatt 4 logische Einheiten zurückzugeben, gibt mir mein Code 16.
static int8_t LogicalProcCount(void)
{
if ( !Hyperthreading )
return 1;
uint32_t unused, ebx;
CPUID(1, unused, ebx, unused, unused);
return (int8_t) ( (ebx >> 16 ) & 0xFF );
}