在Windows下将单个线程设置为实时优先级

时间:2012-05-23 06:21:30

标签: winapi

是否可以将单个线程的优先级设置为实时优先级,尽管该进程不在实时优先级下运行?

2 个答案:

答案 0 :(得分:4)

窗口scheduling priorities清楚地描述了这种情况。 没有称为“实时优先级”的线程优先级。最重要的一个 线程可以获得THREAD_PRIORITY_TIME_CRITICAL。但这并不完全 描述线程的基本优先级。这也取决于进程优先级。 对于几乎所有流程优先级类别,THREAD_PRIORITY_TIME_CRITICAL的设置将为 导致线程以15的基本优先级运行。REALTIME_PRIORITY_CLASS是一个例外。 在进程中设置为THREAD_PRIORITY_TIME_CRITICAL的线程设置为REALTIME_PRIORITY_CLASS,基本优先级为31,这是获得的最高优先级。

NORMAL_PRIORITY_CLASSTHREAD_PRIORITY_TIME_CRITICAL的组合使得线程已经远远高于大多数其他线程(也是OS),但我不会实时调用它。

对于我的观点(并且如“调度优先级列表”中所述),实时仅从大于15的基本优先级开始。因此,当其进程具有{{1}时,线程只能获得实时的priorties。 }。

这意味着您的问题的正确答案是否定的。当一个线程的进程没有实时优先级时,它就无法获得真正的优先级。

答案 1 :(得分:1)