網狐6603棋牌ServerKernel中的IQueueService接口分析

  技術工作人員撰寫網狐底層代碼通信二次開發相關事項,今天解析ServerKernel中的IQueueService接口分析

  根據底層結構分析的此圖:

  在添數據加數據是處理如下數據庫圖:

  在有相關的庫文件來處理執行相關的結構:

  在執行過程中相關代碼展示:

  1//開始服務

  2bool __cdecl CQueueService::StartService()

  3{

  4    //效驗參數

  5    ASSERT(m_bService==false);

  6&線程池的七個參數nbsp;&nb數據漫遊是什麽意思sp;  ASSERT(m_數據漫遊是什麽意思hCompletionPort==NULL);

  7    ASSERT(m_pIQueueServiceSink!=NULL);

  8

網狐6603棋牌ServerKernel中的IQueueService接口分析插圖

  9&nbsp消息英語;   //建立完成端口

  10    //! 需要追蹤一下這裏的完成端口句柄

  11    //! 首先分析這裏的創建,IN線程撕裂者VALID消息免打擾_HANDLE_VALUE表示沒有關聯任何文件句柄,也就是

  12    //! 說不存在某個實現某個操作完成以後系統自動給這個完成端口post一個完成消息的概念

  13數據恢複軟件免費版 &nbs端口聚合p;  //! 然隊列訓練口令後這裏用限制工作線程數是1,也就是同意時刻隻會有一條線程受到完成消息

  14    m_端口轉發hCompletionPort=CreateIoCompletionPort(INVALID_HANDLE線程和進程的區别是什麽_VALUE,隊列隊形教案NULL,NULL,1);

  15  數據透視表  if (m_hCompletionPort==NULL) throw TEXT(”隊列對象完成端口創建端口映射失敗”);

  16

  17&n隊列訓練bsp;   //啓動線程

  18    if (m_QueueServiceThread.InitThread(m_消息hCompletionPort)==false) throw TEXT(”隊列對象線程初始化失敗數據透視表“);

  19    if (m_Que數據漫遊是什麽意思ueServiceThread.StartThead()==fals線程的幾種狀态e) throw TEXT(”隊列對象線程啓動失敗”);

  20

  21    //設置參數

  22    m_bService=true;

  23

  24    return true;

  25}m_Queu線程的幾種狀态eServiceThread.InitThrea消息免打擾是什麽意思d(m_hCompletionPort);是用于給完成端口句柄抛給了服務線程,能得到服務線程工作原理

  //運行函數

  bool CQueueServ數據iceThread::RepetitionRun()

  {

  //效驗參數

  ASSERT(m_hCompletionPort!=NULL);

  //變量定隊列研究

  DWORD dwTha數據庫ncfe隊列隊形口令rred=0;

  OVERLAPPED pOverLapped=NULL;

  CQueueService pQueueService=NULL;

  //等待完成端隊列

  if (GetQueuedCompletionStatus(m_hCompletionPort,&dwThancferred,(PULONG_PTR)&pQueue端口映射Service,&amp數據分析師;pOverLapped,INFINITE))

  線程是什麽意思{

  //判斷退出

  if (pQue端口是什麽意思ueService==NULL) retu數據透視表rn false;

  //獲取數據

  tagDataHe隊列訓練口令ad Data數據透視表Head;

  bool bSuccess=pQueueS線程撕裂者ervice-&gt線程數越多越好嗎;GetData(DataHead,m_cbBuffer,sizeof(m_cbBu隊列隊形教案ffer));

  ASSERT(bSucc隊列訓練ess=數據分析=true);

  //處理數據

  if (bSuccess==true) pQueueService-&端口映射什麽意思gt;OnQueue數據分析師ServiceThread(DataHead,m_cbBuffer,DataH端口映射ead.wDataSize);

  return true;

  }

  return false;

  }執行處理原理過程在此:GetQueuedCompletionStatus(m_hCompletionPort,線程&dwThancferred(PULON線程數越多越好嗎G_PTR)&pQueueService,&pOverLapped,INFINITE)

  m_hCompletionPort是通過線程參數傳遞線程的幾種狀态進來的,dwThancferred和pQueueService是在之前CQueueService::AddToQueue()中Post過來的參數,

  數據經過完成端口在CQueueServiceThread繞一圈以後會回到CQueueService::OnQueueServ端口号怎麽查看iceThread()

  //數據消息

  void CQueueService::OnQueueServiceThread(const tagDataHead & DataHead, void pBuffer, WORD wData線程撕裂者Size)

  {

  ASSERT(m_pIQueueServiceSink!=NULL);

網狐6603棋牌ServerKernel中的IQueueService接口分析插圖1

  try

  {

  m_pIQueueServiceSink-&g端口映射什麽意思t;OnQueueServiceSink(隊列隊形口令DataHead.wIdentifier,pBuffer,DataHead.wDataSize,DataHead.dwIns線程池ertTime);

  }

  catch () {}

  return;

  }

  這樣隊列服務就完成了他的使命,将執行的消息,異步的交給指定接口去處理,用一句話來描述QueueService模塊就是:将隊列的插入和處理通過關聯到完成端口上以實現在IOCP線程池管理下異步處理;Add以後投遞完成消息,在完成端口上監聽的線程受到消息以後讀取數據并處理; 找,還的選擇專業開發商,科技

資源下載此資源僅限注冊用戶下載,請先

【購買風險提示】

1. 全站3000+棋牌資源,終身VIP都可以免費下載,絕無二次收費。

2. 本站棋牌資源大多全網各種渠道采購,資源描述爲轉載資源站點内容,本站沒有精力一一測試,搭建不一定成功。

3. 本站開通數十站點會員,資源過多,大部分無法親自測試,源碼有可能存在缺陷或者不完整的風險,所以低價出售僅供參考研究。确認購買視爲接受該風險,由于源碼具有可複制性,不接受任何理由退款!!!

4. 所有資源不一定包含安裝教程,可以搜索本站其他資源教程作爲參考。

5. 所有資源不提供搭建服務,如有需求請提前聯系客服咨詢。

6. 源碼收集于網絡,僅供研究學習,單機娛樂,請勿用于違法用途,源碼中包含任何聯系方式及網址請謹慎甄别,切勿上當受騙!

資源下載
下載需要:免費

【購買風險提示】

1. 全站3000+棋牌資源,終身VIP都可以免費下載,絕無二次收費。

2. 本站棋牌資源大多全網各種渠道采購,資源描述爲轉載資源站點内容,本站沒有精力一一測試,搭建不一定成功。

3. 本站開通數十站點會員,資源過多,大部分無法親自測試,源碼有可能存在缺陷或者不完整的風險,所以低價出售僅供參考研究。确認購買視爲接受該風險,由于源碼具有可複制性,不接受任何理由退款!!!

4. 所有資源不一定包含安裝教程,可以搜索本站其他資源教程作爲參考。

5. 所有資源不提供搭建服務,如有需求請提前聯系客服咨詢。

6. 源碼收集于網絡,僅供研究學習,單機娛樂,請勿用于違法用途,源碼中包含任何聯系方式及網址請謹慎甄别,切勿上當受騙!

網狐6603棋牌ServerKernel中的IQueueService接口分析原文鏈接:https://qipaiyuanmaxiazai.com/12289.html,轉載請注明出處~~~

0

評論0

           
1,618特惠,前3名終身會員僅售288,盡享全站資源免費下載
2,本站擁有全網最全的棋牌資源,目前已經資源數超3000+
沒有賬号? 注冊  忘記密碼?