SetThreadPriority

This function sets the priority value for the specified thread.

At a Glance

Header file: Winbase.h
Windows CE versions: 1.0 and later

Syntax

BOOL SetThreadPriority( HANDLE hThread, int nPriority);

Parameters

hThread

Handle to the thread whose priority value is to be set.

nPriority

Specifies the priority value for the thread. This parameter can be one of the following values:

Value Description
THREAD_PRIORITY_TIME_CRITICAL Indicates 3 points above normal priority.
THREAD_PRIORITY_HIGHEST Indicates 2 points above normal priority.
THREAD_PRIORITY_ABOVE_NORMAL Indicates 1 point above normal priority.
THREAD_PRIORITY_NORMAL Indicates normal priority.
THREAD_PRIORITY_BELOW_NORMAL Indicates 1 point below normal priority.
THREAD_PRIORITY_LOWEST Indicates 2 points below normal priority.
THREAD_PRIORITY_ABOVE_IDLE Indicates 3 points below normal priority.
THREAD_PRIORITY_IDLE Indicates 4 points below normal priority.

Return Values

Nonzero indicates success. Zero indicates failure. To get extended error information, call GetLastError.

Remarks

Windows CE does not support priority classes. The order in which threads are scheduled is determined only by their thread priorities.

Threads are scheduled in a round-robin fashion at each priority level, and only when there are no executable threads at a higher level does scheduling of threads at a lower level take place.

The SetThreadPriority function enables setting the base priority level of a thread without consideration of priority classes.

All threads initially start at THREAD_PRIORITY_NORMAL. Use the GetThreadPriority function to get the priority value of a thread.

Use thread priority values to differentiate the relative priorities of the tasks of a process. For example, a thread that handles input for a window could have a higher priority level than a thread that performs intensive calculations for the CPU.

When manipulating priorities, ensure that a high-priority thread does not consume all of the available CPU time. A thread with a priority level of THREAD_PRIORITY_TIME_CRITICAL will execute until it explicitly yields processing to other threads. Processing of these threads is not yielded to other threads with the THREAD_PRIORITY_TIME_CRITICAL priority level. Such a thread can interfere with the normal operation of the operating system if the thread does not explicitly yield processing quickly.

See Also

GetThreadPriority