主消息循环,MsgWaitForMultiObjects的使用
2015-04-15 13:20
281 查看
MsgWaitForMultiObjects通常用在主消息循环中,在等待内核对象的同时,能够响应其他关心的消息
http://bbs.csdn.net/topics/360199786
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数组,确保数组中无间隙。
相关文章推荐
- 改进的延时函数Delay(使用MsgWaitForMultipleObjects等待消息或超时的到来)
- 主线程利用MsgWaitForMultipleObjects等待子线程结束时,同时处理子线程发送的窗口消息
- 在界面线程不能使用Sleep和WaitForSingleObject之类的函数, 使用 MsgWaitForMultipleObjects
- Windows API函数 WaitForMultiObjects 的使用注意事项
- 主线程使用WaitForSingleObject和MsgWaitForMultipleObjects等待线程返回值
- 在界面线程不能使用Sleep和WaitForSingleObject之类的函数, 使用 MsgWaitForMultipleObjects
- MsgWaitForMultipleObjects
- WaitForMultipleObject与MsgWaitForMultipleObjects用法
- WaitForMultipleObjects使用详解
- 线程函数的设计以及线程同步要点(MsgWaitForMultipleObjects等)
- WaitForMultipleObjects使用详解
- WaitForSingleObject和WaitForMultipleObjects使用详解
- WaitForMultipleObjects使用详解
- delphi 中使用WaitForMultipleObjects等待线程执行,再执行后续代码
- 用MsgWaitForMultipleObjects代替WaitForSingleObject和WaitForMultipleObjects()
- 等待线程退出 MsgWaitForMultipleObjects和WaitForSingleObject
- WaitForMultipleObjects使用详解
- WaitForMultipleObjects使用详解
- WaitForMultipleObjects使用详解
- WaitForMultipleObjects函数使用注意事项