青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Error

C++博客 首頁 新隨筆 聯系 聚合 管理
  217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

相關UML如下:


添加:



處理



關鍵代碼解析:

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

m_QueueServiceThread.InitThread(m_hCompletionPort);
他悄悄的給完成端口句柄扔給了服務線程,偶們去看看服務線程拿這玩意干了啥,,,

//運行函數
bool CQueueServiceThread::RepetitionRun()
{
    
//效驗參數
    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;

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

        
//處理數據
        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是通過線程參數傳遞進來的,dwThancferredpQueueService是在之前CQueueService::AddToQueue()中Post過來的參數,,,

//加入數據
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;
}


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

//數據消息
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;
}



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


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



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

posted on 2011-05-30 16:10 Enic 閱讀(1666) 評論(1)  編輯 收藏 引用 所屬分類: 網狐棋牌源碼分析

評論

# re: ServerKernel中的IQueueService接口分析 2012-01-19 12:04 哦哦加加
可以把源碼發給我么?40430623  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            在线日韩av| 欧美视频三区在线播放| 黑人操亚洲美女惩罚| 午夜亚洲性色视频| 欧美在线999| 亚洲国产婷婷| 亚洲乱码国产乱码精品精98午夜| 欧美午夜激情视频| 欧美亚洲一区二区在线观看| 欧美在线不卡| 亚洲精品免费看| 一区二区黄色| 激情久久一区| 亚洲精品国偷自产在线99热| 国产精品成人观看视频国产奇米| 久久国产精品久久久久久久久久| 久久男人av资源网站| 在线亚洲一区| 久久www免费人成看片高清| 亚洲黄色一区| 亚洲欧美日本在线| 亚洲黄色一区二区三区| 亚洲永久精品大片| 亚洲韩国青草视频| 亚洲欧美日韩国产一区| 久久精品99国产精品酒店日本| 亚洲日产国产精品| 小辣椒精品导航| 亚洲人精品午夜| 性欧美大战久久久久久久久| 亚洲美女在线看| 久久精彩视频| 亚洲欧美日韩电影| 欧美成年视频| 久久久综合网站| 欧美日韩亚洲天堂| 免费在线观看日韩欧美| 国产精品日韩在线播放| 亚洲黑丝在线| 在线欧美三区| 久久国产精品久久久久久| 在线视频精品一| 免费高清在线一区| 久久亚洲美女| 国产日韩欧美视频在线| 日韩一级免费| 日韩一区二区久久| 蜜臀久久久99精品久久久久久| 欧美一区二视频| 国产精品毛片高清在线完整版| 欧美激情成人在线| 在线观看日韩精品| 久久久久久久91| 久久久精品国产一区二区三区| 国产精品欧美久久| 一区二区三区高清| 亚洲少妇中出一区| 欧美日韩午夜在线| 亚洲毛片在线观看| 一本色道久久88综合日韩精品| 免费成人高清视频| 欧美激情在线| 亚洲日韩视频| 欧美日韩精品免费| 一本久道久久综合婷婷鲸鱼| 一本久久精品一区二区| 欧美日韩大片一区二区三区| 亚洲欧洲日本国产| 亚洲一区影音先锋| 国产精品一区二区久久国产| 亚洲欧美在线高清| 久久噜噜亚洲综合| 亚洲国产成人在线视频| 欧美大片一区二区三区| 亚洲精品在线免费观看视频| 正在播放欧美视频| 国产精品视频| 欧美专区18| 欧美黄色一区| 99综合在线| 国产精品久久久久久久一区探花| 亚洲在线中文字幕| 久久久久久9999| 91久久精品国产| 欧美日韩在线综合| 欧美一区二区三区视频| 欧美大秀在线观看 | 亚洲伊人网站| 久久婷婷丁香| 一区二区三区www| 国产欧美精品国产国产专区| 久久久久九九九| 亚洲日本欧美日韩高观看| 国产精品亚洲网站| 免费成人在线观看视频| 在线一区二区日韩| 毛片一区二区| 亚洲视频狠狠| 伊人久久婷婷| 国产精品家庭影院| 久久人体大胆视频| 亚洲一区二区三区国产| 蜜桃av久久久亚洲精品| 亚洲视频视频在线| 在线观看日韩av电影| 欧美手机在线| 欧美成人资源网| 欧美在线观看你懂的| 亚洲美女一区| 欧美成人免费va影院高清| 午夜久久久久久| 99精品久久免费看蜜臀剧情介绍| 国产在线欧美日韩| 国产精品久久久久永久免费观看| 久久一区二区三区超碰国产精品| 亚洲视频在线播放| 亚洲欧洲精品一区二区| 美女网站在线免费欧美精品| 亚洲在线成人精品| av成人老司机| 亚洲高清免费| 国精产品99永久一区一区| 欧美午夜国产| 欧美色视频日本高清在线观看| 玖玖国产精品视频| 欧美在线资源| 亚洲欧美日韩另类精品一区二区三区| 亚洲三级视频| 亚洲高清久久| 欧美大片在线观看| 欧美大片网址| 欧美freesex8一10精品| 久久手机免费观看| 久久久久久久一区二区| 香蕉久久夜色精品国产| 亚洲免费网址| 午夜久久久久久| 性久久久久久久久久久久| 亚洲一级黄色片| 亚洲视频自拍偷拍| 亚洲一区二区网站| 亚洲无线一线二线三线区别av| 一区二区电影免费观看| 99日韩精品| 中日韩高清电影网| 亚洲一级片在线观看| 亚洲一区二区三区高清不卡| 亚洲一区二区不卡免费| 亚洲永久免费观看| 羞羞答答国产精品www一本| 欧美一区二区三区日韩视频| 性欧美videos另类喷潮| 久久激情一区| 男人的天堂亚洲| 亚洲第一狼人社区| 亚洲精品一区二区三区99| 91久久在线视频| 99国内精品久久久久久久软件| 99精品视频免费| 性一交一乱一区二区洋洋av| 久久精品国产96久久久香蕉| 欧美大成色www永久网站婷| 欧美日韩ab片| 国产欧美日韩激情| 亚洲国产成人在线播放| 亚洲色图综合久久| 久久精品国产91精品亚洲| 麻豆九一精品爱看视频在线观看免费| 亚洲成人资源| 亚洲伊人伊色伊影伊综合网| 久久精品视频免费观看| 欧美区一区二| 国产区欧美区日韩区| 亚洲精品国产精品国自产观看| 欧美性色aⅴ视频一区日韩精品| 国产亚洲欧美日韩日本| 亚洲精品综合精品自拍| 午夜精品久久久久久久99水蜜桃 | 欧美一区二区三区免费观看| 欧美成人资源| 国产小视频国产精品| 日韩午夜av电影| 欧美综合国产精品久久丁香| 亚洲高清在线| 欧美亚洲一区二区三区| 欧美日韩国产91| 国内精品免费午夜毛片| 亚洲无线观看| 亚洲成色999久久网站| 午夜视频在线观看一区二区三区| 欧美成人综合在线| 国产一区二区视频在线观看 | 国产精品二区影院| 91久久综合| 可以看av的网站久久看| 亚洲永久网站| 欧美日韩一级黄| 亚洲精品免费电影| 欧美www在线| 久久视频在线看|