每个线程都要被赋予一个优先级号,取值为0(最低)到31(最高)。
Windows 支持6 个优先级类:idle、below normal、normal、above normal、high 和real-time。从字面上也可以看出,normal 是被绝大多数应用程序采用的优先级类。其实,进程也是有优先级的,只是在实际的开发过程中很少使用而已。进程属于一个优先级类,还可以为进程中的线程赋予一个相对线程优先级。但是,一般情况下并不改变进程的优先级(默认是nomal),所以可以认为,线程的相对优先级就是它的真实优先级,与其所在的进程的优先级类无关。
线程刚被创建时,他的相对优先级总是被设置为normal。若要改变线程的优先级,必须使用下面这个函数。- BOOL SetThreadPriority (HANDLE hThread, int nPriority);
- hThread 参数是目标线程的句柄,nPriority 参数定义了线程的优先级,取值如下所示:
- THREAD_PRIORITY_TIME_CRITICAL Time-critical(实时)
- THREAD_PRIORITY_HIGHEST Highest(最高)
- THREAD_PRIORITY_ABOVE_NORMAL Above normal(高于正常,Windows 98 不支持)
- THREAD_PRIORITY_NORMAL Normal(正常)
- THREAD_PRIORITY_BELOW_NORMAL Below normal(低于正常,Windows 98 不支持)
- THREAD_PRIORITY_LOWEST Lowest(最低)
- THREAD_PRIORITY_IDLE Idle(空闲)