首页
社区
课程
招聘
未解决 [求助]关于while循环cpu占用过高
发表于: 2018-11-24 23:52 3308

未解决 [求助]关于while循环cpu占用过高

2018-11-24 23:52
3308
ULONG i=0;
while(1)
{
      i++;
      //Sleep(1);
}
一个死循环会使cpu占用变得很高  但是 在后面加一个sleep  cpu占用就会降下来 sleep把线程cpu时间片让出来 但是会使程序暂停1毫秒 sleep参数最小就是1毫秒 请问有什么别的方式能让cpu占用降下去吗 不用sleep 或者有什么方法能让线程休眠微秒或则纳秒吗 百度了一下午 还是搞不定 大佬们有什么好的方法可以指点一下的吗 谢谢了

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 1176
活跃值: (1269)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
2
这写法 16核都没用 最简单的是用sleep 最好的是用.......
2018-11-24 23:56
1
雪    币: 2055
活跃值: (486)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
Tennn 这写法 16核都没用 最简单的是用sleep 最好的是用.......
是..........Wait内核对象吗 
2018-11-25 00:05
1
雪    币: 261
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
可以Sleep(0)的..放弃剩余时间片
或者你要更高的精度可以CreateWaitableTimer
最后于 2018-11-25 00:11 被yuchengton编辑 ,原因:
2018-11-25 00:09
1
雪    币: 2055
活跃值: (486)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
yuchengton 可以Sleep(0)的..放弃剩余时间片或者你要更高的精度可以CreateWaitableTimer
谢谢回复 sleep(0) 没啥用 不能解决cpu占用过高的问题  感觉这个函数会让cpu更忙 因为他没有休眠时间只是切换下线程执行 这还要主动执行线程切换  SwitchToThread也没用 如果没有线程迫切需要CPU时间片 这两个函数都会立刻返回  然后你那个Createwait函数我去试试
2018-11-25 00:23
1
雪    币: 6657
活跃值: (4506)
能力值: ( LV10,RANK:163 )
在线值:
发帖
回帖
粉丝
6
不想等待就是事件了。
2018-11-25 00:48
0
雪    币: 125
活跃值: (45)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
void MySleep(DWORD dwTime)  
{  
       LARGE_INTEGER my_interval;  
       my_interval.QuadPart = -10 *1000;  
       my_interval.QuadPart *= dwTime;  
       KeDelayExecutionThread(KernelMode,0,&my_interval);
}
2018-11-25 06:46
1
雪    币: 2055
活跃值: (486)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
dsjflw void MySleep(DWORD dwTime) { LARGE_INTEGER my_interval; my_interval.QuadPart = -10 *1000; ...
谢谢大佬这函数是内核函数 我需要的是用户层函数
2018-11-25 13:05
0
雪    币: 2055
活跃值: (486)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
谢谢大佬  CreateWaitableTimer函数可以用 已经解决了
2018-11-25 15:10
0
雪    币: 2055
活跃值: (486)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
yuchengton 可以Sleep(0)的..放弃剩余时间片或者你要更高的精度可以CreateWaitableTimer
谢谢大佬  CreateWaitableTimer函数可以用 已经解决了
2018-11-25 15:11
0
雪    币: 2473
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
setthreadaffinitymask
2018-11-25 15:39
0
雪    币: 12857
活跃值: (9172)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
12
不要问,问就一句话:注入就完事了
2018-11-25 18:09
0
雪    币: 163
活跃值: (1623)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
13
不吃麻婆豆腐 谢谢大佬 CreateWaitableTimer函数可以用 已经解决了
休息的更少,CPU的使用率也能降下来吗?
2018-11-26 10:27
0
雪    币: 1258
活跃值: (1434)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
改成定时执行
CreateWaitableTimer
WaitForSingleObject
SetWaitableTimer
2018-11-26 11:42
0
雪    币: 293
活跃值: (287)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
问题不是出在减少循环占用CPU,而是你整个程序功能上设计就不合理
2018-11-26 12:13
0
游客
登录 | 注册 方可回帖
返回
//