Назначение 1 процессора для 1 потока

Я реализую код, который создает импульсный выход через цифровой ввод-вывод для шагового драйвера. Однако я замечаю, что когда запущена "чужая" программа (т. Е. Антивирус), вывод (рабочий цикл) станет непоследовательным. Можно ли в любом случае назначить этот поток одному ЦП в многоядерных ЦП, чтобы другие программы, даже управляемые Windows, не могли назначить нить этому ЦП? Я использую C# в качестве программирования.

1 ответ

Единственный способ сделать это - перечислить все остальные процессы в системе и установить маску сходства, чтобы исключить процессор, который вы пытаетесь сохранить для своего потока. Вам также придется продолжать это делать, поскольку дополнительные процессы могут быть созданы в любое время.

Лучше всего просто запустить процесс в классе приоритетов "в реальном времени", а затем установить приоритет потока как "критичный ко времени". (Я надеюсь, что это не должно быть на самом деле выполняется на слишком высокий процент от общего времени.)

Однако обработчики прерываний и подпрограммы DPC по-прежнему могут мешать вашему потоку.

Ваша настоящая проблема здесь в том, что Windows не предназначена и не подходит для задач с "жесткими" требованиями в реальном времени, и ваш звучит так.

Я предлагаю использовать микроконтроллер, который предназначен для генерации импульсов переменного рабочего цикла, в которых нуждается ваш шаговый двигатель.

В каком диапазоне частоты и рабочего цикла нужен шаговый двигатель? Там может быть другой способ решить вашу проблему.

Другие вопросы по тегам