2

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

4

2 回答 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 回答