Windows 7 процессор опрос - PullRequest
       36

Windows 7 процессор опрос

0 голосов
/ 11 октября 2018

У меня ПК с 24 ядрами.У меня есть приложение, которому необходимо выделить поток для одного из этих ядер, а сам процесс - для нескольких из этих ядер.Сходство и приоритеты теперь жестко запрограммированы, я хотел бы программно определить, какой набор ядер мое приложение должно установить для своего сродства.

Я прочитал, чтобы держаться подальше от ядра 0, в настоящее время я использую последнее8 ядер на первом процессоре для процесса и 12 ядро ​​для потока, который я хочу запустить.Вот пример кода, который не может быть на 100% точным с параметрами.

SetProirityClass(getCurrentProcess(),REAL_TIME_PRIORITY_CLASS);
SetProcessAffinityMask(getCurrentProcess(),0xFF0);
CreatThread(myThread, 0, entryPoint, NUll, 0, 0);//all 0 params besides handle and entry
SetThreadPriorityClass(myThread, TIME_CRITICAL);
SetThreadAffinityMask(myThread, 0x1 << 11);

Я знаю, что с повышенными приоритетами (даже с базовым приоритетом 31) невозможно выделить ядро ​​для приложения (пожалуйста,поправьте меня, если я ошибаюсь, так как это именно то, что я хочу сделать, непрограммные решения были бы хороши, если бы я мог это сделать).Тем не менее, сама ОС работает «в основном» на ядре или нескольких ядрах.Это случайно определяется при загрузке?Могу ли я опросить доступные ядра, чтобы программно определить, на каком наборе ядер должен работать мой процесс и поток TIME_CRITICAL?

Есть ли какой-нибудь способ предотвратить кражу потоками ядра временных интервалов моего потока TIME_CRITICAL?

Я понимаю, что окна не в реальном времени, но я делаю все возможное с тем, что у меня есть.Решение должно применяться к win 7, но если оно также поддерживается в XP, было бы замечательно.

...