提高软件CPU占用率

案例:

独立线程以5ms一包的速率接收指令(一共大概70-80种指令类型),并放入一个队列A

主线程中,根据定时器去队列A中取数据,并解析/计算/显示(速率:200包/秒)

现象:按理说这个收/发的频率是能保持平衡的,也就是收多少就处理多少,延迟会很小(可能就是一个指令的传输时间),但是实际现象是,随着时间的推移,队列A越来越大。

发现:调试的时候发现是处理数据的时候,判断数据包类型,并进行解析模块比较费时间(注释掉这块内容就不存在延迟了)。因此排除了代码本身的问题;

代码没问题,那就只能从设备方下手

解决方案:提高软件的优先级,让CPU优先处理我这个软件的计算处理


    //REALTIME_PRIORITY_CLASS  实时
    //HIGH_PRIORITY_CLASS      高
    //ABOVE_NORMAL_PRIORITY_CLASS 高于正常
    //NORMAL_PRIORITY_CLASS  正常
    //BELOW_NORMAL_PRIORITY_CLASS 低于正常
    //IDLE_PRIORITY_CLASS 空闲

    GetCurrentProcess():当前软件进程


int main(int argc, char *argv[])
{
    SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS );
}

查看进程的当前CPU优先级:

任务管理器-鼠标右键(软件进程)-转到详细详细-鼠标右键(软件进程)-设置进程优先级

 然后,你启动软件的时候就会发现,应用程序优先级,由默认的正常,改成了你需要的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值