导航
  • 主页
  • VC/MVC基础类
  • .NET 技术
  • VC/MFC界面
  • VC/MFC 进程
  • VC/MFC 数据库
  • VC/MFC&Web
  • Doc/View

窗口的过程函数,感觉本质上就是一个死循环吧,为何不占尽资源呢?

zwth001 2010-07-31 09:58:56
窗口的过程函数,感觉本质上就是一个死循环吧,为何不占尽资源呢?
在程序中如果不小心写成死循环,运行后,机器的cpu,内存资源会很快耗尽,
但是窗口的过程函数,也是一个死循环呀,只要不关闭窗口,这个循环就会一直循环下去,
为何这个循环不会占尽机器资源,可是自已在while循环中不小写成死循环,就是很快占尽机器资源呢?
...全文
168 点赞 收藏 12
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
iqyely 2010-08-02
来学习下
回复
Eleven 2010-08-02
如果GetMessage没有得到其它待处理的事件,就会让出控制权。。。
回复
peterdan 2010-08-02
每天回一帖
回复
思危 2010-08-02
因为GetMessage没消息时会挂起线程
回复
wltg2001 2010-08-01
[Quote=引用 2 楼 zwth001 的回复:]
引用 1 楼 fishion 的回复:
这是个消息循环,没消息时就会等待不运行。。吧


没有消息也会循环呀,如果不循环的话,有了消息也感应不到,是吧。

应该是在很短的时间段内,反复的检测系统或者用户是否有消息产生
[/Quote]
没有消息的时候,这个线程根本就拿不到CPU时间,相当于Sleep了。感觉楼主的观念是建立在DOS那种程序的基础上的,Windows程序在运行过程中始终有操作系统的参与和交互。
回复
shihaojie1219 2010-08-01
up回复太快,请先休息一下!
回复
heavenmoon 2010-08-01
本身过程函数是回调函数,加上当GetMessage检测不到消息时,会将时间片控制权重新回交给系统。
回复
eeixy2000 2010-08-01
这个问题提的好:但是感觉回答的都很难说到点子上,个人感觉应该是:回调函数的原因而不是说没有消息就等待或是把CPU时间片交给系统。
回复
wltg2001 2010-07-31
窗口的过程函数,感觉本质上就是一个死循环吧,为何不占尽资源呢?
================
窗口的过程函数根本就不是循环啊,循环是while(GetMessage(...))吧,这是因为当没有消息GetMessage就会将CPU的控制权交出去,相当于没有消息时线程处理休眠状态
回复
zwth001 2010-07-31
[Quote=引用 1 楼 fishion 的回复:]
这是个消息循环,没消息时就会等待不运行。。吧
[/Quote]

没有消息也会循环呀,如果不循环的话,有了消息也感应不到,是吧。

应该是在很短的时间段内,反复的检测系统或者用户是否有消息产生
回复
fishion 2010-07-31
这是个消息循环,没消息时就会等待不运行。。吧
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告