【求助】SLEEP函数造成高CPU占用率
gamemaker吧
全部回复
仅看楼主
level 1
心然之 楼主
我在room中create code,其中sleep(1000);结果在这十秒内,CPU使用率持续高达50%,这个sleep没有把时间片交出去吗?
2009年05月17日 11点05分 1
level 11
这个使用方法没必要,建议从最基础的介绍看起。
2009年05月17日 16点05分 2
level 1
心然之 楼主
呵呵,其实不是有没有必要的问题,我只是做个测试,
不然不使用step事件的话就没有办法控制帧率了。
我这边测试的结果是在create事件中如果存在有sleep,就会造成高cpu占用,在诸如step等事件中,即便每step停上10秒CPU占用率也几乎为零(这才是
正确的
结果)
基础介绍?F1的那个吗?我觉得不够详细...
2009年05月18日 01点05分 3
level 11
就算它不详细
莫非楼主的F1里边少写了个0?
2009年05月18日 02点05分 4
level 13
用room_speed就可以控制帧率了。。一般情况他们是一致的~ 这样可以制作某些慢动作。如boss死掉的瞬间
2009年05月18日 07点05分 5
level 13
sleep自身就是一个空循环。肯定会卡住的。。
2009年05月18日 07点05分 6
level 1
心然之 楼主
啊,版主大人降临了!深感荣幸。
这里面的sleep不知道是不是直接使用了 win32 API中的::sleep()
如果是的话,那么程序就会挂起,交出它的时间片,知道下一次机器周期的到来。也就是说,这时候这个程序已经不占用CPU了。
我STEP事件中对GM 的sleep函数进行测试,发现程序挂起的时候CPU占用率极低,也就是说这里的STEP中的sleep确实是让程序挂起了。
而在create事件中(对象的也好,room的也好),只要添加一个sleep事件,就会造成挂起+极高的CPU占用率。我觉得这和GM的消息机制有点关系。
您也可以试试看。
2009年05月18日 08点05分 7
level 13
O(∩_∩)O哈哈~既然这样你就不用想那么麻烦啦,既然你发现他的Sleep并不像API里的工作方式的话。那就换种想法啦,就代表他并不是调用的API的Sleep,如果你有需要,其实是可以通过第三方软件来使用API滴。
2009年05月18日 09点05分 8
level 10
帧率用room_speed就好
2016年06月26日 22点06分 9
1