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

How to be sure that the process is set to REAL_TIME priority

本文关键字:REAL TIME 优先级 设置 程设置 何确保 确保      更新时间:2023-10-16

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

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

我的意思是,任何其他系统进程都不应该干扰它,因为它是一个实时数据采集系统,每10毫秒刷新一次帧缓冲区。

我试着把每一帧的时间长度保存到一个文件中,我发现在我无序的时间周围有一个奇怪的"量化"。为什么?

我还发现,有时长度是我基本帧时间的倍数,这是由干扰内部O.S.过程引起的吗?

有没有办法确保我的项目具有最高优先级?

您只需要调用SetThreadPriority

我以前是这样的:

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

需要注意的是,其他应用程序也可以这样做,所以两个线程的优先级相同。