0

我正在 Windows XP 上使用 Visual Studio 开发控制台 C++ 应用程序,该应用程序必须为调度程序提供最高优先级。

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

 }

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

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

我还发现有时长度是我的基本帧时间的倍数,这是由干扰内部操作系统进程引起的吗?

有没有办法确保我的程序的最高优先级?

4

1 回答 1

2

您只需要调用SetThreadPriority

我是这样使用的:

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

只是要注意其他应用程序可以执行相同的操作,因此两个线程将具有相同的优先级。

于 2012-01-19T16:00:53.443 回答