要求:用VS2005撰寫訊息佇列程式,實作收發行程之間的同步通信;即訊息佇列空時接收行程無法接收且有向用戶的資訊輸出:“佇列空” ;訊息佇列滿時發送行程無法發送且有向用戶的資訊輸出:“佇列滿” 。同步機制所用的API函式請自行選擇。
相關已寫代碼:
HANDLE hmsgq;
MSGQUEUEOPTIONS mqo;
mqo.bReadAccess = FALSE;
mqo.cbMaxMessage = 32;
mqo.dwFlags = MSGQUEUE_ALLOW_BROKEN;
mqo.dwMaxMessages = 3; //訊息佇列容量3
mqo.dwSize = sizeof(MSGQUEUEOPTIONS);
TCHAR *writebuf = new TCHAR[32];
hmsgq = CreateMsgQueue(L"MsgQueue",&mqo);//創建新的訊息佇列 or 根據名字打開訊息佇列
//寫訊息
BOOL val = WriteMsgQueue(hmsgq,writebuf,32,INFINITE,0); //寫訊息進佇列
問:此時,我如何知道佇列是否已滿,或者說知道該佇列中有幾條訊息?
使用GetMsgQueueinfo()是否可以實作?請求大神能給個例程~
uj5u.com熱心網友回復:
一般來說,判斷XX已滿的方法有許多1、計數器----統計當前佇列中的資料,進入+1,彈出-1
2、遍歷佇列,if(leng=maxlen)滿
3、寫入資料失敗
4......
5....
uj5u.com熱心網友回復:
遍歷佇列,if(leng=maxlen)滿,無法發送轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/48578.html
標籤:進程/線程/DLL
下一篇:MFC CFile Open失敗
