ceSetThreadPriority
一直采用SetThreadPriority,结果今天发帖询问线程时间问题,才突然顿悟。。。发现SetThreadPriority仅仅设置248-255,也就是说就算是设为最高优先级,顶多是248.。。。差好远呢。。。而ceSetThreadPriority的设置范围是0-255,最高为0!!!我就说我的线程设置的优先级怎么没什么用。。。。。。NYYD。。。
初始化代码中的关键 Win32 API 调用是对 CeSetThreadPriority 的调用。此函数接受两个参数。第一个参数是线程句柄,第二个值介于 0-255 之间,用于描述所需的优先级。选择使用哪个线程优先级非常关键,而能够以图表表现应用程序优先级的使用,也有助于确保适当的性能。优先级从 0 至 247 的线程(0 表示最高优先级)是实时线程优先级,需要调用 CeSetThreadPriority 来访问。一般线程优先级介于 248-255 之间,要使用
SetThreadPriority 进行访问。下表提供了 Windows CE .NET 标准优先级实现的快速指南。
表 3:实时线程优先级:CeSetThreadPriority
优先级 | 组件 |
---|---|
0-19 | 开放 - 高于驱动程序的实时 |
20 | Permedia 垂直折返 |
21-98 | 开放 - 高于驱动程序的实时 |
99 | 电源管理恢复线程 |
100-108 | USB OHCI UHCI、串行 |
109-129 | Irsir1、NDIS、触摸板 |
130 | KITL |
131 | VMini |
132 | CxPort |
133-144 | 开放 - 设备驱动程序 |
145 | PS2 键盘 |
146-147 | 开放 - 设备驱动程序 |
148 | IRComm |
149 | 开放 - 设备驱动程序 |
150 | TAPI |
151-152 | 开放 - 设备驱动程序 |
153-247 | 开放 - 低于驱动程序的实时 |
表 4:一般线程优先级:SetThreadPriority
优先级 | 组件 |
---|---|
248 | 电源管理 |
249 | WaveDev、TVIA5000、鼠标、PnP、电源 |
250 | WaveAPI |
251 | 电源管理器电池线程 |
252-255 | 开放 |
一般来说,最先需要决定的是要确定关键线程是否需要驱动程序。如果关键线程需要驱动程序才能正常工作,而将它的优先级设定为高于驱动程序的优先级,则很难获得好的性能。总之,时间关键型应用程序需要放在“高于驱动程序类别的实时”类别中,优先级范围为 0-98。
ceSetThreadPriority设置线程优先级~!
时间: 2024-10-12 09:09:33