- 论坛徽章:
- 0
|
我想用消息队列进行消息的处理,消息分为两种,一是一般的消息,二是紧急的消息,
一般的消息,必须前一个消息处理之后处理,就像下面的代码一样。
紧急的消息,在一般消息没有处理完时,取消一般消息处理,转到紧急消息处理,这个怎么实现啊??
求教高人,谢谢。
WORD32 P_GUI_Entry()
{
for (;![](static/image/smiley/default/icon_wink.gif)
{
memset(g_aucDataBuf, 0, READER_MAX_RCV_MSG_LEN*sizeof(BYTE));
iRet = msgrcv(g_dwGuiMsgQid, g_aucDataBuf, READER_MAX_RCV_MSG_LEN-sizeof(long), 0, MSG_NOERROR);
if(0 > iRet)
{
/*消息队列接收出错*/
printf("msgrcv error in Gui process!\n";
break;
}
ptMsg = (T_Msg *)g_aucDataBuf;
if (ptMsg->wMsgLen > (READER_MAX_RCV_MSG_LEN - sizeof(T_Msg)))
{
/*接受到超过缓冲区长度的消息*/
continue;
}
dwRet = GUIMsgProc(g_dwState, ptMsg, g_aucDataBuf + sizeof(T_Msg));
}
return READER_SUCCESS;
} |
|