Aumentos de prioridad
Cada subproceso tiene una prioridad dinámica. Esta es la prioridad que usa el programador para determinar qué subproceso se va a ejecutar. Inicialmente, la prioridad dinámica de un subproceso es la misma que su prioridad base. El sistema puede aumentar y reducir la prioridad dinámica, para asegurarse de que responde y que no hay subprocesos agotados para el tiempo del procesador. El sistema no aumenta la prioridad de los subprocesos con un nivel de prioridad base entre 16 y 31. Solo los subprocesos con una prioridad base entre 0 y 15 reciben aumentos de prioridad dinámica.
El sistema aumenta la prioridad dinámica de un subproceso para mejorar su capacidad de respuesta como se indica a continuación.
Cuando un proceso que usa NORMAL_PRIORITY_CLASS se lleva al primer plano, el programador aumenta la clase de prioridad del proceso asociado a la ventana de primer plano, de modo que sea mayor o igual que la clase de prioridad de cualquier proceso en segundo plano. La clase priority vuelve a su configuración original cuando el proceso ya no está en primer plano.
Cuando una ventana recibe entradas, como mensajes del temporizador, mensajes del mouse o entrada de teclado, el programador aumenta la prioridad del subproceso que posee la ventana.
Cuando se cumplen las condiciones de espera de un subproceso bloqueado, el programador aumenta la prioridad del subproceso. Por ejemplo, cuando finaliza una operación de espera asociada al disco o la E/S del teclado, el subproceso recibe un aumento de prioridad.
Puede deshabilitar la característica de aumento de prioridad llamando a la función SetProcessPriorityBoost o SetThreadPriorityBoost . Para determinar si esta característica se ha deshabilitado, llame a la función GetProcessPriorityBoost o GetThreadPriorityBoost .
Después de elevar la prioridad dinámica de un subproceso, el programador reduce esa prioridad en un nivel cada vez que el subproceso completa un segmento de tiempo, hasta que el subproceso retroceda a su prioridad base. La prioridad dinámica de un subproceso nunca es menor que su prioridad base.