If several threads are set at high priority at the same time, the threads lose their effectiveness. If a thread runs at the highest priority level for extended periods, other threads in the system will not get processor time.
This prevents the threads of this process, which do not have high priority, from interfering with higher priority threads.
Processes that monitor the system, such as screen savers or applications that periodically update a display, should use IDLE_PRIORITY_CLASS. Use the GetPriorit圜lass function to determine the current priority class of a process and the SetPriorit圜lass function to change the priority class of a process. If the calling process is IDLE_PRIORITY_CLASS or BELOW_NORMAL_PRIORITY_CLASS, the new process will inherit this class. Use the CreateProcess function to specify the priority class of a child process when you create it. Priority ClassĮach process belongs to one of the following priority classes: IDLE_PRIORITY_CLASSīy default, the priority class of a process is NORMAL_PRIORITY_CLASS. For information on the dynamic priority of a thread, see Priority Boosts. The priority class and priority level are combined to form the base priority of a thread. The priority level of the thread within the priority class of its process.The priority of each thread is determined by the following criteria: For more information, see Context Switches.
If a higher-priority thread becomes available to run, the system ceases to execute the lower-priority thread (without allowing it to finish using its time slice) and assigns a full time slice to the higher-priority thread. If none of these threads are ready to run, the system assigns time slices in a round-robin fashion to all threads with the next highest priority. The system assigns time slices in a round-robin fashion to all threads with the highest priority. The system treats all threads with the same priority as equal. (The zero-page thread is a system thread responsible for zeroing any free pages when there are no other threads that need to run.) Only the zero-page thread can have a priority of zero. The priority levels range from zero (lowest priority) to 31 (highest priority). Each thread is assigned a scheduling priority.
Threads are scheduled to run based on their scheduling priority.