如何确保将进程设置为REAL_TIME优先级

时间:2012-01-19 15:51:06

标签: c++ process real-time win32-process

我正在使用Windows XP上的Visual Studio开发一个控制台C ++应用程序,该程序必须具有调度程序可能的最高优先级。

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

 }

我的意思是没有其他系统进程会干扰它,因为它是一个实时数据采集系统,每10毫秒调整一次刷新帧缓冲区。

我试图将每帧的时间长度保存到文件中,并且在我的时间周围发现了一个奇怪的“量化”。为什么呢?

我还发现,有时长度是我的基帧时间的倍数,这是由内部O.S.干扰造成的。过程

有没有办法确保我的计划的最高优先级?

1 个答案:

答案 0 :(得分:2)

您只需拨打SetThreadPriority

即可

我这样用过:

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

只是要注意其他应用程序也可以这样做,因此两个线程都具有相同的优先级。