我正在使用Windows XP上的Visual Studio开发一个控制台C ++应用程序,该程序必须具有调度程序可能的最高优先级。
int main()
{
while ( somecondition )
{
// pick data from external hardware every 10 milliseconds
// do computation
}
}
我的意思是没有其他系统进程会干扰它,因为它是一个实时数据采集系统,每10毫秒调整一次刷新帧缓冲区。
我试图将每帧的时间长度保存到文件中,并且在我的时间周围发现了一个奇怪的“量化”。为什么呢?
我还发现,有时长度是我的基帧时间的倍数,这是由内部O.S.干扰造成的。过程
有没有办法确保我的计划的最高优先级?
答案 0 :(得分:2)
您只需拨打SetThreadPriority
即可我这样用过:
HANDLE hThread = GetCurrentThread(void);
SetThreadPriority(hThread, THREAD_PRIORITY_TIME_CRITICAL);
只是要注意其他应用程序也可以这样做,因此两个线程都具有相同的优先级。