Tekkaman

导航

 

进程优先级&线程优先级

  线程的优先级越高那么就可以分占相对多的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

posted on 2013-03-28 14:01  Tekkaman  阅读(3420)  评论(0编辑  收藏  举报