首页
社区
课程
招聘
怎么控制线程占用的cpu
2010-5-26 19:26 5930

怎么控制线程占用的cpu

2010-5-26 19:26
5930
有个线程一直在循环执行.
在执行某些代码的时候会产生cpu峰值.

目标:
    (1)尽量不产生峰值
    (2)能控制cpu占用率.

线程优先级虽然很好用,但有时候cpu占用率也会很高(虽然系统并不卡).

各位帮忙想想办法. 回帖就有分噢,有好主意的会使劲加分.

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (8)
雪    币: 75
活跃值: (423)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
skypismire 1 2010-5-26 20:24
2
0
控制线程占用cpu的好像仅有两个变量吧,一个就是楼主提到的优先级,还有一个是时间片
PKTHREAD Thread->Quantum.改变优先级搞不定,就试试时间片,适当改小点:)
雪    币: 65
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
用戶名 2010-5-26 20:30
3
0
来个比较低级的方案, sleep .....
雪    币: 238
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
笨石头 2010-5-26 20:58
4
0
如果是多核的,就用CPU亲和码吧,这样至少不会超过50%
雪    币: 331
活跃值: (57)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
better 2 2010-5-27 10:05
5
0
没事睡一下,sleep(0)就可以了
雪    币: 2523
活跃值: (520)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
风随雨行 1 2010-5-27 10:25
6
0
这个用sleep(0)一般可以解决,但是要靠经验和尝试,sleep多了线程切换会过于频繁,少了则达不到效果
雪    币: 357
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Ditans 2010-5-27 10:58
7
0
要不用Job来限制?
SetInformationJobObject可以控制进程使用的用户态时间、内核时间、内存、权限等等。

楼主可以研究一下,对解决你的问题有没有帮助。
雪    币: 156
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
落寒 2010-5-27 13:02
8
0
线程一直循环的话,应该无法降低cpu占用率吧,但是应该也不会产生峰值才对。

当系统中只有一个线程在while(1){}死循环时,CPU占用率约为50%左右,两个while(1){}死循环就直接100%了(我打字的时候实测)。

所以我觉得还是应该改进线程的执行逻辑,合理使用等待和唤醒,避免死循环才是正道……
雪    币: 1505
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
bithaha 5 2010-5-27 20:10
9
0
是想把线程的cpu占用比较平稳下来,尽量不会有时候高有时候低,而且不能造成卡机.
线程优先级已经用过了,4楼,2楼和7楼的方法还没试.下去试试.
结贴.
等不行了再发帖问:)
游客
登录 | 注册 方可回帖
返回