您的位置:首页 > 其它

Wince下设定线程的优先级 总结

2018-02-23 17:08 260 查看
wince下设定线程的优先级一般有以下两种方式:

1. 通过ceSetThreadPriority函数

 

BOOL CeSetThreadPriority(

  HANDLE hThread,

  int nPriority

);

第一个参数是线程句柄,第二个值介于 0-255
之间,用于描述所需的优先级。选择使用哪个线程优先级非常关键,而能够以图表表现应用程序优先级的使用,也有助于确保适当的性能。优先级从 0
至 247 的线程(0 表示最高优先级)是实时线程优先级,需要调用 CeSetThreadPriority 来访问。一般线程优先级介于
248-255 之间,要使用 SetThreadPriority 进行访问。下表提供了 Windows CE .NET
标准优先级实现的快速指南。

 

表 3:实时线程优先级:CeSetThreadPriority[/b]
优先级组件
0-19开放 – 高于驱动程序的实时
20Permedia 垂直折返
21-98开放 – 高于驱动程序的实时
99电源管理恢复线程
100-108USB OHCI UHCI、串行
109-129Irsir1、NDIS、触摸板
130KITL
131VMini
132CxPort
133-144开放 – 设备驱动程序
145PS2 键盘
146-147开放 – 设备驱动程序
148IRComm
149开放 – 设备驱动程序
150TAPI
151-152开放 – 设备驱动程序
153-247开放 – 低于驱动程序的实时
表 4:一般线程优先级:SetThreadPriority[/b]
优先级组件
248电源管理
249WaveDev、TVIA5000、鼠标、PnP、电源
250WaveAPI
251电源管理器电池线程
252-255开放
一般来说,最先需要决定的是要确定关键线程是否需要驱动程序。如果关键线程需要驱动程序才能正常工作,而将它的优先级设定为高于驱动程序的优先级,则很难获得好的性能。总之,时间关键型应用程序需要放在“高于驱动程序类别的实时”类别中,优先级范围为
0-98。

 
优先级范围分配对象
0-96高于驱动程序的程序
97-152基于Windows CE的驱动程序
153-247低于驱动程序的程序
248-255普通的应用程序
 

 

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. 

 

获取线程优先级:

 

int CeGetThreadPriority(

  HANDLE hThread

);

 

2. 通过SetThreadPriority函数,其设定优先级的范围为:248-255,这个要注意了

 

BOOL SetThreadPriority(

HANDLE hThread, // handle to the thread

int nPriority // thread priority level

);

功能说明

设置指定线程的优先级

参数说明
 线程优先级等级
标志
优先级值
1
idle (最低)
THREAD_PRIORITY_IDLE
如果进程优先级为realtime则调整为16,其它情况为1
2
LOWEST 低
THREAD_PRIORITY_LOWEST
-2(在原有基础上-2)
3
BELOW 低于标准
THREAD_PRIORITY_BELOW_NORMAL
-1(在原有基础上-1)
4
NORMAL(标准)
THREAD_PRIORITY_NORMAL
不变(取进程优先级值)
5
ABOVE 高于标准
THREAD_PRIORITY_ABOVE_NORMAL
+1(在原有基础上+1)
6
HIGHEST (高)
THREAD_PRIORITY_HIGHEST
+2(在原有基础上+2)
7
CRITICAL(最高)
THREAD_PRIORITY_TIME_CRITICAL
如果进程优先级为realtime则调整为31,其它情况为15

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: