主消息循环,MsgWaitForMultiObjects的使用

本文探讨了MsgWaitForMultiObjects函数的应用场景,尤其是在主消息循环中的使用方式。通过示例展示了如何在等待内核对象的同时响应其他消息,并讨论了代码中关于线程退出计数及句柄数组管理的问题。

MsgWaitForMultiObjects通常用在主消息循环中,在等待内核对象的同时,能够响应其他关心的消息

http://bbs.csdn.net/topics/360199786

 

int exitThreadCount = 0; //判断线程退出的个数
 int waitThreadCount = 4; //等待的线程个数
 while(TRUE)
 {
 
DWORD result ; 
 MSG msg ; 
 
result = MsgWaitForMultipleObjects(waitThreadCount, handle,//句柄的数组 
FALSE, INFINITE, QS_ALLINPUT);
 if (result >= WAIT_OBJECT_0 && result < WAIT_OBJECT_0 + waitThreadCount) 
 { 
exitThreadCount ++;
 if(exitThreadCount >= 1 && exitThreadCount <= 3)
 {

<span style="color:#333333;background-color: rgb(255, 0, 0);"> int nIndex = result - WAIT_OBJECT_0;
 handle[nIndex] = handle[waitThreadCount-1];
 handle[waitThreadCount-1] = NULL;
 waitThreadCount --;
</span> 
} 
else 
 break;
 }  
else if(result = WAIT_OBJECT_0 + waitThreadCount)
 { 
 //TRACE("消息\n");
 PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);
 TranslateMessage(&msg); 
 DispatchMessage(&msg); 
 } 
 }
上述红色部分有问题,这里应该重新整理handle数组,确保数组中无间隙。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值