注册 登录
编程论坛 C图形专区

如何解决循环中的CPU100%?

wonshing 发布于 2006-09-24 12:34, 1046 次点击
大家写一般的图形界面下的游戏,游戏过程应该是程序中的一个循环吧,可一进入循环,就出现了CPU占100%现象,好卡,那么我想问的是:怎么样才能使写出来的游戏能象WINDOWS下的游戏一样,使CPU处在低功耗状态?
7 回复
#2
jig2006-09-24 13:46

朋友,你首先要清楚的是,你在XP下写的DOS程序,其实是跑在XP下的,你那个所谓DOS其实是XP下的虚拟DOS,也就是说并不是真的DOS环境,所以才出现你所说的那个情况,具体内部机制我是不懂,当我知道要实现你说的那样好的效果,让他不卡,我想是很难办到的。

[此贴子已经被作者于2006-9-24 13:47:17编辑过]

#3
一笔苍穹2006-09-25 10:33
因为DOS程序不能像WIN程序那样使用Sleep(0)来暂时交出CPU占用,所以只要你在WIN环境下打开了DOS程序,哪怕这个程序只是等待一个getch()按键,CPU占用都会是满的。这个问题在程序代码上是不好解决的,你可以试试微软的idle.com,在运行自己的DOS.EXE之前运行idle.com,在windows下可以通过一个bat批处理来实现,建立一个BAT文件,输入类似下面内容:
idle.com
xx.exe
假设你的xx.exe是只有一个getch()的程序,他在XP下以DOS窗口的形式打开,直接运行它,可以发现CPU占用率迅速上升到100%,哪怕是将它最小化切换到后台也没用;而使用我们刚才那个批处理打开的xx.exe,由于在它运行之前加载了idle.com,所以运行该BAT的效果是CPU占用率在上去之后几秒种就马上下来了,而且将程序切换到后台就对CPU没什么影响了。
以上效果具体情况与各人的机器也有一定的关系,但毕竟能在一定程序上改善这一问题。
idle.com下载:
只有本站会员才能查看附件,请 登录

[此贴子已经被作者于2006-9-25 10:34:23编辑过]

#4
jig2006-09-25 17:02
厉害
#5
wonshing2006-09-25 18:22
多谢两位版主
试了,好象没什么效果,不知道是不是批处理文件的问题,
我是这样写的:
@echo off
idle.com
*.exe
:done
不过我机子的状况是:只要把程序切换到后台,CPU的使用率马上就降下去了

#6
一笔苍穹2006-09-26 09:38

批处理没什么问题,这个效果是与机器还有程序本身有一定关系的,在我这边好像要改善大一些

#7
RockCarry2006-09-27 08:55
我晕,游戏运行的时候就是希望最大的占用CPU的,Windows的游戏程序也是如此,这个不必担心。只要你的游戏程序运行流畅就可以了。
#8
一笔苍穹2006-09-27 09:50
windows下全屏独占模式的游戏是无所谓。不过窗口模式的游戏还是得多少考虑CPU占用问题,譬如有可能我玩的同时还在聊QQ
1