【进程优先级&线程优先级】
线程的优先级越高那么就可以分占相对多的CPU时间片。每个进程都有相应的优先级,线程优先级决定它何时运行和占用CPU时间。最终的优先级共分32级是从0到31的数值称为 基本优先级别 。
OS调度的是线程,真正具有优先级的是线程,而进程优先级是作为一个优先级Class存在。
进程优先级:
priorityclass 标志 优先级值
idle(低) I D L E _ P R I O R I T Y _ C L A S S 4
Below(低于标准) B E L O W _ N O R M A L _ P R I O R I T Y _ C L A S S
normal(标准) N O R M A L _ P R I O R I T Y _ C L A S S 9(前台)或7(后台)
Above(高于标准) A B O V E _ N O R M A L _ P R I O R I T Y _ C L A S S
high(高) H I G H _ P R I O R I T Y _ C L A S S 1 3
realtime(实 时) R E A L T I M E _ P R I O R I T Y _ C L A S S
一个线程创建的时候,会继承进程的优先级。 外线程优先级可以用SetThreadPriority来进行微调。
线程优先级等级 标志 优先级值
idle(最低) THREAD_PRIORITY_IDLE 如果进程优先级为realtime则调整为16,其它情况为12
LOWEST(低) THREAD_PRIORITY_LOWEST -2(在原有基础上-2)
BELOW(低) THREAD_PRIORITY_BELOW_NORMAL -1(在原有基础上- 1)
NORMAL(标准) THREAD_PRIORITY_NORMAL 不变(取进程优先级值)
ABOVE(高于标准) THREAD_PRIORITY_ABOVE_NORMAL +1(在原有基础上+1)
HIGHEST(高) THREAD_PRIORITY_HIGHEST +2(在原有基础上+2)
CRITICAL(最高) THREAD_PRIORITY_TIME_CRITICAL 如果进程优先级为realtime则调整为31其它情况为1
So,常用的桌面系统,都是分时操调度,根据线程的优先级来分配调度时间。
参考:http://wenku.baidu.com/view/9e373c2aed630b1c59eeb5e6.html