我正在 Windows XP 上使用 Visual Studio 开发控制台 C++ 应用程序,它必须为调度程序设置尽可能高的优先级。
int main()
{
while ( somecondition )
{
// pick data from external hardware every 10 milliseconds
// do computation
}
}
我的意思是没有其他系统进程应该干扰它,因为它是一个实时数据采集系统,每 10 毫秒刷新一次帧缓冲区。
我试图将每一帧的时间长度保存到一个文件中,但我发现在我想要的时间周围有一个奇怪的“量化”。为什么?
我还发现有时长度是我的基本帧时间的倍数,这是由于干扰内部操作系统造成的吗?过程?
有没有办法确保我的程序的最高优先级?
最佳答案
您只需调用 SetThreadPriority
我是这样用的:
HANDLE hThread = GetCurrentThread(void);
SetThreadPriority(hThread, THREAD_PRIORITY_TIME_CRITICAL);
只是要注意其他应用程序可以做同样的事情,所以两个线程将具有相同的优先级。
关于c++ - 如何确定进程设置为 REAL_TIME 优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8929039/