Win32多线程之标准消息循环

Windows程序中的标准消息循环看起来如下所示:

while(GetMessage(&msg, NULL, 0, 0) )

{

      TranslateMessage(&msg);

      DispatchMessage(&msg);

}

    GetMessage()有点像是特殊版本的WaitForSingleObject(),它等待消息而不是核心对象。一旦你调用GetMessage(),除非有一个消息真正进入你的消息队列(message queue)之中,否则它不会反回。在此期间,Windows就可以自由地将CPU时间给予其他程序。

   “常常回到主消息循环”是十分重要的一件事。如果你没这么做,你的窗口就会停止重绘,你的程序菜单就不再有作用。

问题是,如果你正使用WaitForSingleObject()或WaitForMultipleObjects()等待某个对象被激发,你根本没有办法回到主消息循环中去。

   当主线程正在处理主消息循环时,不要使用第二个线程来等待handles,因为如果你这么做,只是把问题从某处移到另一处。

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值