优先级提升

每个线程都有动态 优先级。 这是计划程序用于确定要执行的线程的优先级。 最初,线程的动态优先级与基本优先级相同。 系统可以提升和降低动态优先级,以确保它具有响应能力,并且没有线程因处理器时间不足而不足。 系统不会提高基本优先级级别在 16 到 31 之间的线程的优先级。 只有基本优先级在 0 到 15 之间的线程才能接收动态优先级提升。

系统提高线程的动态优先级,以增强其响应能力,如下所示。

  • 将使用 NORMAL _ PRIORITY CLASS 的进程带到前台时,计划程序将提升与前台窗口关联的进程的优先级类,以便它大于或等于任何后台进程的优先级类。 _ 当进程不再位于前台时,优先级类将返回到其原始设置。

  • 当窗口接收输入(如计时器消息、鼠标消息或键盘输入)时,计划程序会提高拥有窗口的线程的优先级。

  • 当满足阻塞线程的等待条件时,计划程序会提高线程的优先级。 例如,当与磁盘或键盘 I/O 关联的等待操作完成时,线程会收到优先级提升。

    可以通过调用 SetProcessPriorityBoostSetThreadPriorityBoost 函数来禁用优先级提升功能。 若要确定是否已禁用此功能,请调用 GetProcessPriorityBoostGetThreadPriorityBoost 函数。

在引发线程的动态优先级后,计划程序每次线程完成时间切片时,将该优先级降低一个级别,直到线程恢复为基本优先级。 线程的动态优先级从不小于其基本优先级。