c++ - 如何确定进程设置为 REAL_TIME 优先级

标签 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 毫秒刷新一次帧缓冲区。

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

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

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

最佳答案

您只需调用 SetThreadPriority

我是这样用的:

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

只是要注意其他应用程序可以做同样的事情,所以两个线程将具有相同的优先级。

关于c++ - 如何确定进程设置为 REAL_TIME 优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8929039/

相关文章:

javascript - 在不挂起浏览器的情况下执行 'realtime' javascript

c++ - OpenGL更新部分VBO(点云)

c++ - #include 文件派生自宏 __FILE__?

c - 是什么杀死了父进程?

c - 对于 32 位提升的进程,OpenProcess 返回 ERROR_ACCESS_DENIED

algorithm - 快速循环十进制数字进行打印(嵌入)

c# - 在 C++ IDL 中定义结构,然后在 C# 中适本地定义 MarshalAs()

c++ - 如何将 char 转换为关联的转义序列?

java - 找到一个正在杀死我的进程的神秘进程

python - MatPlotLib 的 ion() 和 draw() 不工作