zoukankan      html  css  js  c++  java
  • ceSetThreadPriority设置线程优先级~!

    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。

  • 相关阅读:
    Java入门(6)方法
    重构改善已有代码
    .NET面试题系列(八)电商瞬时抢购的方案
    .NET面试题系列(七)IIS
    设计模式综述
    基于ELK5.1(ElasticSearch, Logstash, Kibana)的一次整合测试
    acl.go
    单机部署-consul
    baseFileWriter.go
    config.go
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4368167.html
Copyright © 2011-2022 走看看