网狐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. 源码收集于网络,仅供研究学习,单机娱乐,请勿用于违法用途,源码中包含任何联系方式及网址请谨慎甄别,切勿上当受骗!

原文链接:https://qipaiyuanmaxiazai.com/12289.html,转载请注明出处~~~

0

评论0

1,本站运营一周年特惠,前3名终身会员仅售288,尽享全站资源免费下载
2,本站拥有全网最全的棋牌资源,目前已经资源数超3000+
没有账号? 注册  忘记密码?