日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网狐棋牌(一) ServerKernel中的IQueueService接口分析

發(fā)布時間:2024/4/11 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网狐棋牌(一) ServerKernel中的IQueueService接口分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

相關(guān)UML如下:


添加:



處理



關(guān)鍵代碼解析:

?1//開始服務(wù)
?2bool?__cdecl?CQueueService::StartService()
?3{
?4????//效驗參數(shù)
?5????ASSERT(m_bService==false);
?6????ASSERT(m_hCompletionPort==NULL);
?7????ASSERT(m_pIQueueServiceSink!=NULL);
?8
?9????//建立完成端口
10????//!?需要追蹤一下這里的完成端口句柄
11????//!?首先分析這里的創(chuàng)建,INVALID_HANDLE_VALUE表示沒有關(guān)聯(lián)任何文件句柄,也就是
12????//!?說不存在某個實現(xiàn)某個操作完成以后系統(tǒng)自動給這個完成端口post一個完成消息的概念
13????//!?然后這里用限制工作線程數(shù)是1,也就是同意時刻只會有一條線程受到完成消息
14????m_hCompletionPort=CreateIoCompletionPort(INVALID_HANDLE_VALUE,NULL,NULL,1);
15????if?(m_hCompletionPort==NULL)?throw?TEXT("隊列對象完成端口創(chuàng)建失敗");
16
17????//啟動線程
18????if?(m_QueueServiceThread.InitThread(m_hCompletionPort)==false)?throw?TEXT("隊列對象線程初始化失敗");
19????if?(m_QueueServiceThread.StartThead()==false)?throw?TEXT("隊列對象線程啟動失敗");
20
21????//設(shè)置參數(shù)
22????m_bService=true;
23
24????return?true;
25}

m_QueueServiceThread.InitThread(m_hCompletionPort);
他悄悄的給完成端口句柄扔給了服務(wù)線程,偶們?nèi)タ纯捶?wù)線程拿這玩意干了啥,,,

//運行函數(shù)
bool?CQueueServiceThread::RepetitionRun()
{
????//效驗參數(shù)
????ASSERT(m_hCompletionPort!=NULL);

????//變量定義
????DWORD?dwThancferred=0;
????OVERLAPPED?*?pOverLapped=NULL;
????CQueueService?*?pQueueService=NULL;

????//等待完成端口
????if?(GetQueuedCompletionStatus(m_hCompletionPort,&dwThancferred,(PULONG_PTR)&pQueueService,&pOverLapped,INFINITE))
????{
????????//判斷退出
????????if?(pQueueService==NULL)?return?false;

????????//獲取數(shù)據(jù)
????????tagDataHead?DataHead;
????????bool?bSuccess=pQueueService->GetData(DataHead,m_cbBuffer,sizeof(m_cbBuffer));
????????ASSERT(bSuccess==true);

????????//處理數(shù)據(jù)
????????if?(bSuccess==true)?pQueueService->OnQueueServiceThread(DataHead,m_cbBuffer,DataHead.wDataSize);

????????return?true;
????}


????return?false;
}



秘密在此:
GetQueuedCompletionStatus(m_hCompletionPort,&dwThancferred,(PULONG_PTR)&pQueueService,&pOverLapped,INFINITE)
m_hCompletionPort是通過線程參數(shù)傳遞進來的,dwThancferred和pQueueService是在之前CQueueService::AddToQueue()中Post過來的參數(shù),,,

//加入數(shù)據(jù)
bool?__cdecl?CQueueService::AddToQueue(WORD?wIdentifier,?void?*?const?pBuffer,?WORD?wDataSize)
{
????CThreadLockHandle?LockHandle(&m_ThreadLock);
????m_DataStorage.AddData(wIdentifier,pBuffer,wDataSize);
????PostQueuedCompletionStatus(m_hCompletionPort,wDataSize,(ULONG_PTR)this,NULL);
????return?true;
}


數(shù)據(jù)經(jīng)過完成端口在CQueueServiceThread繞一圈以后會回到CQueueService::OnQueueServiceThread()

//數(shù)據(jù)消息
void?CQueueService::OnQueueServiceThread(const?tagDataHead?&?DataHead,?void?*?pBuffer,?WORD?wDataSize)
{
????ASSERT(m_pIQueueServiceSink!=NULL);
????try????
????{?
????????m_pIQueueServiceSink->OnQueueServiceSink(DataHead.wIdentifier,pBuffer,DataHead.wDataSize,DataHead.dwInsertTime);?
????}

????catch?()?{}
????return;
}



這樣隊列服務(wù)就完成了他的使命,將執(zhí)行的消息,異步的交給指定接口去處理,,,


稍后將對列隊列服務(wù)做個宏觀上的的分析,,,下班時間到,,,回去繼續(xù),,,



用一句話來描述QueueService模塊就是:
將隊列的插入和處理通過關(guān)聯(lián)到完成端口上以實現(xiàn)在IOCP線程池管理下異步處理;
Add以后投遞完成消息,在完成端口上監(jiān)聽的線程受到消息以后讀取數(shù)據(jù)并處理;

總結(jié)

以上是生活随笔為你收集整理的网狐棋牌(一) ServerKernel中的IQueueService接口分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久久久久一区 | 法国性xxxx精品hd | 日本大尺度电影免费观看全集中文版 | 色婷婷av一区 | 久久黄色网址 | 国产精品久久久久久妇女 | 欧美激情不卡 | 黄色男同视频 | 桃谷绘里香在线观看 | 久久99精品久久只有精品 | 精品成人一区二区三区久久精品 | 三区在线| 国外精品视频 | 色鬼久久 | 全黄一级裸体 | 日韩涩 | 日韩欧美一区二区一幕 | 可以免费看的av网站 | 欧美偷拍少妇精品一区 | 第一色影院 | 国产精品视频久久久久久 | 国内精品一区二区三区 | 高清人妖shemale japan | 亚洲另类网站 | 综合久久久久久 | 国产调教打屁股xxxx网站 | 波多野结衣喷潮 | 亚洲男人天堂 | 国产成人免费视频网站 | 免费看黄色的网站 | 一级少妇女片 | 在线观看亚洲大片短视频 | 国产女人18毛片水真多 | 久草精品视频在线观看 | 日本中文不卡 | 肉性天堂 | 老头巨大又粗又长xxxxx | 四虎在线影视 | 亚洲综合在线观看视频 | 男生插女生的网站 | 日本呦呦 | 99热在线观看 | 国产精品激情偷乱一区二区∴ | 黄在线免费| 成人欧美一区二区三区小说 | 日本一级大片 | 粉色午夜视频 | 黄色一级片在线免费观看 | 99精品免费视频 | 人成在线视频 | 夜夜操天天射 | 精品国产亚洲一区二区麻豆 | 国产在线aaa| 日韩久久一区二区三区 | 欧美操操| 亚洲97色 | 精品一区二区免费视频 | 亚洲精品自拍 | 5月婷婷6月丁香 | 九九久久综合 | 国产成人精品一区二区三区四区 | 国产在线视频一区 | 精彩久久| 日韩在线免费观看视频 | 国内老熟妇对白hdxxxx | 五月天爱爱 | 九九热精品 | 日本一区二区三区网站 | 一边摸一边做爽的视频17国产 | 久久国产网| 黄色国产一级 | 中文字幕第九页 | 丰满少妇一区二区三区视频 | 逼特逼在线视频 | 亚洲欧美中文字幕 | 萌白酱喷水视频 | 99亚洲天堂 | 亚洲av无码专区首页 | 一级二级三级黄色片 | 毛片网站在线看 | 成人日皮视频 | 成人一区二区免费视频 | 高清久久久久久 | 久久综合一本 | 中文视频在线观看 | 欧美淫| 经典毛片 | 国产一区二区不卡 | 日本不卡1 | 91a视频| 成年人免费看 | 邵氏电影《金莲外传2》免费观看 | free性欧美hd精品4k | 丁香花电影免费播放在线观看 | 性欧美在线观看 | 亚洲成人a∨ | 午夜男人网 | 国产三级三级看三级 | 91一级视频 |