1、在paintEvent中调用update函数,造成无限循环。
2、频繁刷新数据。
3、复杂的浮点运算。
4、死循环。
5、paintEvent里 *** 作太多。
遇到这个问题的程序是利用多个子线程(接收子线程)同时接收并解析网口的数据,同时另外一个子线程冲尘(融合子线程)对多个子线程解析得到的数据进行融合处理,接收子线程和融合子线程之间通过Qt的信号-槽机制码耐进行数据交互。通过分析发现,各子线程运行之后均处于死循环状态,即使此时没有待接收/处理的数据,线程也会处于“空转迟判春”状态,由此导致了CPU的过分占用。
这个是比较麻烦的事情。一般出现CPU占用率高,是由于程序的某些地方不合理裤御,造成了CPU资源的大量占激前用。
解决的方胡铅岩法就是细心的,一段段程序进行分段封闭测试。把问题逐步定位,最后解决。
对于减少CPU占用,除了完善程序设计本身,还有一点很重要的,就是不要所有功能都写在一起,搞得一个程序很大很大作qws,那么CPU吃不消,有个技巧就是拆分,尤其作qws的程序不能很大。------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
做超级复杂的浮点运算 还友梁是死循环 还是paintEvent里做太多 *** 作了
------解决方案--------------------------------------------------------
你需要频蚂或繁刷新数据,对cpu时间片占有还是比好物运较高的
------解决方案--------------------------------------------------------
你应该先检测一下程序里面是那一部分消耗的CPU太大了,如果在Linux上可以用比如callgrind检测
如果是GUI刷新的开销过大,可以考虑用GPU做GUI部分
------解决方案--------------------------------------------------------
0.1s 刷新是不是太快了。慢一点看看。感觉像是有死循环一样CPU占用太高。
------解决方案--------------------------------------------------------
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)