尽管进程不在实时优先级下运行,是否可以将单个线程的优先级设置为实时优先级?
问问题
4414 次
2 回答
4
窗口调度优先级清楚地描述了情况。没有称为“实时优先级”的线程优先级。线程可以获得的最高优先级是THREAD_PRIORITY_TIME_CRITICAL
. 但这并不能完全描述线程的基本优先级。这也是由进程优先级决定的。对于几乎所有进程优先级类的设置THREAD_PRIORITY_TIME_CRITICAL
将导致线程以 15 的基本优先级运行。一个例外是REALTIME_PRIORITY_CLASS
. THREAD_PRIORITY_TIME_CRITICAL
设置为在设置为以基本优先级 31 运行的进程内的线程REALTIME_PRIORITY_CLASS
,这是要获得的最高优先级。
NORMAL_PRIORITY_CLASS
和的结合THREAD_PRIORITY_TIME_CRITICAL
使一个线程已经远远高于大多数其他线程(也是操作系统),但我不会称之为实时。
在我看来(如“调度优先级列表”中所述)实时仅从高于 15 的基本优先级开始。因此,线程只能在其进程具有REALTIME_PRIORITY_CLASS
.
这意味着您的问题的正确答案是否定的。当线程的进程没有实时优先级时,线程无法获得实时优先级。
于 2012-07-22T17:05:38.417 回答
1
可以使用SetThreadPriority
,但不推荐。
于 2012-05-23T10:11:45.390 回答