Как быть уверенным, что процесс имеет приоритет REAL_TIME - PullRequest
0 голосов
/ 19 января 2012

Я разрабатываю консольное приложение C ++ с Visual Studio для Windows XP, которое должно иметь максимально возможный приоритет для планировщика.

 int main()
 {
     while ( somecondition )
     {
        // pick data from external hardware every 10 milliseconds
        // do computation 
     }

 }

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

Я попытался сохранить в файл временную длину каждого кадра, и обнаружил странное «квантование» вокруг моего времени. Почему?

Я также обнаружил, что иногда длина кратна времени моего базового кадра, это вызвано вмешательством внутреннего O.S. процессы?

Есть ли способ обеспечить самый высокий приоритет моей программы?

1 Ответ

2 голосов
/ 19 января 2012

Все, что вам нужно, это позвонить SetThreadPriority

Я использовал это так:

HANDLE hThread = GetCurrentThread(void);
SetThreadPriority(hThread, THREAD_PRIORITY_TIME_CRITICAL);

Просто чтобы заметить, что другие приложения могут делать то же самое, поэтому оба потокабудет иметь такой же приоритет.

...