|
给你贴两段简单的程序说明这个问题。
第一段就会每时每刻100%,第二段就不会。
不好的程序:
while ...
zhjecho 发表于 2010-9-15 17:03 ![]()
多谢!
虽然我并不精通Windows 消息编程,但是如果是
单核CPU,即使第一种写法它也不会耗尽100% 的CPU毕竟很多线程在跑,如果它的优先级设置的特别高最多也就是它的时间片会多拿点,理论上100% 的CPU被它占用住是不可能的。
多核CPU就更不可能了。
对于你的第二种写法,有点疑问:
WaitMessage:
当一个线程的消息队列中没有消息存在时,WaitMessage函数会使该线程中断并处于等待状态,同时把控制权交给其它线程,直到被中断的那个线程的消息队列中有了新的消息为止。
你的PeekMessage都返回False了就说明消息Queue里面啥都没有,为啥你还要调用WaitMessage? 从上面文档看,WaitMessage会做许多事情,你这么频繁调用它是不是本身也在占用CPU?
我记得很多教科书上 Main函数里面并没有包含WaitMessage这个调用。 |
|