У меня есть многопоточное приложение c++, которое работает на Windows, Mac и нескольких версиях Linux.
Короче говоря: для того, чтобы он работал с максимальной эффективностью, я должен иметь возможность создавать отдельный поток для каждого физического процессора/ядра. Создание большего количества потоков, чем существует физических процессоров/ядер, значительно снижает производительность моей программы. Я уже могу правильно определить количество логических процессоров/ядер на всех трех этих платформах. Чтобы иметь возможность правильно определять количество физических процессоров/ядер, я должен определить, поддерживается ли гипертрединг И активен ли он.
Поэтому у меня вопрос: есть ли способ определить, поддерживается ли Hyper Threading и включен ли? Если да, то как именно.