Boost di priorità
Ogni thread ha una priorità dinamica . Questa è la priorità usata dall'utilità di pianificazione per determinare il thread da eseguire. Inizialmente, la priorità dinamica di un thread corrisponde alla priorità di base. Il sistema può aumentare e abbassare la priorità dinamica, per garantire che sia reattivo e che nessun thread venga risolto per il tempo del processore. Il sistema non aumenta la priorità dei thread con un livello di priorità di base compreso tra 16 e 31. Solo i thread con priorità di base compresa tra 0 e 15 ricevono boost di priorità dinamica.
Il sistema aumenta la priorità dinamica di un thread per migliorarne la velocità di risposta come indicato di seguito.
Quando un processo che usa NORMAL_PRIORITY_CLASS viene portato in primo piano, l'utilità di pianificazione aumenta la classe di priorità del processo associato alla finestra in primo piano, in modo che sia maggiore o uguale alla classe di priorità di tutti i processi in background. La classe priority torna all'impostazione originale quando il processo non è più in primo piano.
Quando una finestra riceve input, ad esempio messaggi timer, messaggi del mouse o input da tastiera, l'utilità di pianificazione aumenta la priorità del thread proprietario della finestra.
Quando vengono soddisfatte le condizioni di attesa per un thread bloccato, l'utilità di pianificazione aumenta la priorità del thread. Ad esempio, al termine di un'operazione di attesa associata al disco o all'I/O della tastiera, il thread riceve un boost di priorità.
È possibile disabilitare la funzionalità di boosting con priorità chiamando la funzioneSetProcessPriorityBoosto setThreadPriorityBoost. Per determinare se questa funzionalità è stata disabilitata, chiamare la funzioneGetProcessPriorityBoosto getThreadPriorityBoost.
Dopo aver generato la priorità dinamica di un thread, l'utilità di pianificazione riduce tale priorità di un livello ogni volta che il thread completa una sezione temporale, fino a quando il thread non torna alla priorità di base. La priorità dinamica di un thread non è mai inferiore alla priorità di base.