2016-09-16 13 views
0

Я хочу посвятить некоторые ядра процессора исключительно для своего приложения для потоковой передачи данных в реальном времени, потому что я хочу, чтобы этот процесс всегда работал без контекстного переключения. (Обеспечение отсутствия приложения, кроме моего процесса, выполняющегося на этом ядре)Есть ли способ посвятить ядра процессора исключительно для процесса в Windows 10?

Кажется, что есть рабочее решение для Linux. Есть ли способ сделать это для Windows 10?

Любое решение будет принята с благодарностью.

(Я думал о настройке близости процесса в диспетчере задач. Но для того, чтобы выделять ядра процессора (например, только ядро ​​1) исключительно для моего процесса, я должен снять галочку 1 в окне сродства процесса для всех процессов и только проверка ядра 1 для моего процесса. Однако это решение является слишком трудоемким физическим трудом и, похоже, сложно сделать это программно.)

+0

Нет, Windows не предоставляет никакого способа сделать это. То, что вы * можете сделать, - увеличить приоритет вашей нити. Однако всегда будет потеряно время от аппаратных прерываний, если ничего другого. Windows не является операционной системой реального времени. –

+0

У вас возникли какие-либо проблемы при работе планировщика задач в зависимости от того, как вы планируете, или вы ищете преждевременную оптимизацию? – IInspectable

+0

@HarryJohnston Спасибо за ваш комментарий. Понимаю. – asqdf

ответ

-1

Вы можете использовать API-интерфейс WIN32 API SetProcessAffinityMask(), чтобы установить сродство процесса.

+0

Это элемент управления, на котором работает поток процессов. Он не отмечает это ядро ​​для исключительного использования одним процессом, как задал вопрос. – IInspectable

+0

@Inspectable Вы можете использовать SetProcessAffinityMask(), чтобы выполнить то, что описал ОП в его последнем комментарии. То есть. Использование EnumerateProcesses() и вызов SetProcessAffinityMask() для каждого процесса в системе. Не изящно и, вероятно, требует привилегий администратора. Однако он будет делать то, что ОП описал как «трудно сделать программно». – richb

+0

Как насчет процессов, которые создаются после запуска вашего кода? Как насчет очевидной гонки TOCTTOU? Как насчет системных служб или кода драйвера? Извините, это даже не теоретическая возможность. – IInspectable