先引用一位大佬的回答,真的很全面== Qt 性能优化:CPU占有率高的现象和解决办法
问题描述:
我的程序通过TCP与硬件FPGA交互获取数据,然后显示在界面上,同时还有四个子线程,分别负责:网络连接;数据接收;数据存储;数据读取。
version 1:
刚运行时:CPU占有率80%左右,但是打开对应的子线程,CPU占有率会相应下降,最低到45%
version 2:
给所有子线程的while循环处添加 Sleep(1)
再次运行程序,CPU占有率下降到65%,同样打开对应的子线程,CPU占有率相应下降,最低到45%
version 3:
将原来子线程的Sleep时间改一改,如原来是 Sleep(300)
,现在改为 Sleep(100)
,再次运行程序,CPU占有率下降到23%,同样打开对应的子线程,CPU占有率不再下降,基本稳定在23%。
总结:
CPU占有率较高的时候,首先得想到使用子线程,但是在有子线程的情况下,就要注意使用 Sleep()
函数,以表示让渡时间片;另一方面,使用也要考虑 Sleep()
函数里的数值,不可过大。