• <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>

            Focus on ACE

            訂閱 ace-china
            電子郵件:
            瀏覽存于 groups.google.com 上的所有帖子

            C++博客 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
              64 Posts :: 3 Stories :: 22 Comments :: 0 Trackbacks

            小技巧: 當(dāng)ACE_Svc_Handler關(guān)閉時(shí)使用的默認(rèn)行為

            Stone Jiang

            上一篇我們看了ACE_Svc_Handler::open()掛勾函數(shù)提供默認(rèn)行為的一些技巧。因?yàn)樵诖蠖鄶?shù)情況下,它完成了服務(wù)創(chuàng)建時(shí)所需的所有事情:為輸入事件注冊(cè)新處理器和返回。


            在ACE_Svc_Handler中關(guān)閉操作的默認(rèn)行為要比在open()中初始化的代碼更為復(fù)雜。這是因?yàn)殛P(guān)閉時(shí)的掛勾函數(shù)包含了反應(yīng)式(reactive)關(guān)閉和主動(dòng)式(active-object)關(guān)閉兩種情

            況,它們有相同的效果:刪除所有在反應(yīng)器注冊(cè)的事件和確保刪除ACE_Svc_handler的派生類的對(duì)象。

            ?

            反應(yīng)式關(guān)閉(handle_close()): 當(dāng)以下形況發(fā)生時(shí)被調(diào)用:
            ?1) 事件回調(diào)函數(shù)(譯注:handle_xxxx())返回-1時(shí),或
            ?2) 調(diào)用ACE_Reactor::remove_handler(),傳入的標(biāo)記不含 DONT_CALL時(shí)
            ?反應(yīng)器框架將調(diào)用handle_close()掛勾函數(shù)。 ACE_Svc_handler::handle_close()的默認(rèn)行為是調(diào)用ACE_Svc_Handler::destroy()銷毀事件處理器。


            主動(dòng)對(duì)象式關(guān)閉(close()): 當(dāng)ACE_Svc_Handler 派生的對(duì)象通過(guò)activate()函數(shù)轉(zhuǎn)變?yōu)橹鲃?dòng)對(duì)象,處理器的的svc()方法在它產(chǎn)生的線程中運(yùn)行后進(jìn)行回調(diào)。當(dāng)svc()返回時(shí),線程

            退出,但在它要退出時(shí),仍在將要退出線程的上下文中,ACE_Task框架調(diào)用它的close()方法。ACE_Svc_Handler::close()方法調(diào)用handle_close()完成服務(wù)處理器的清理工作。

            因此,不管ACE_Svc_Handler對(duì)象是反應(yīng)式還是主動(dòng)式,結(jié)束時(shí)的清理工作都在相同的地方:ACE_Svc_Handler::destroy()。如果對(duì)象是動(dòng)態(tài)分配且不是ACE_Stream框架中的組成部

            分,destroy()將刪除此對(duì)象,如果對(duì)象不是動(dòng)態(tài)分配的,析構(gòu)它的責(zé)任是創(chuàng)建時(shí)對(duì)象所在的封閉范圍。如果對(duì)象是ACE_Stream的模塊的組成部分,流和/或控制流的代碼負(fù)責(zé)管理

            對(duì)象的生命期。destroy()函數(shù)應(yīng)遵守這樣的規(guī)則來(lái)避免出現(xiàn)資源泄漏。


            無(wú)論ACE_Svc_Handler對(duì)象是反應(yīng)式銷毀還是主動(dòng)式銷毀,都會(huì)引起相同的事情發(fā)生:~ACE_Svc_Handler() (處理器的析構(gòu)函數(shù))調(diào)用ACE_Svc_Handler::shutdown()函數(shù)完成服務(wù)處

            理器的清理工作。shutdown()執(zhí)行的這些清理操作是:

            ?

            如果處理器與反應(yīng)器是關(guān)聯(lián)的:
            ?? 取消處理器關(guān)聯(lián)的所有定時(shí)器。
            ?? 為處理器的流對(duì)象(如socket)刪除所有已注冊(cè)的事件。
            如果處理器與再生器(recycler)是關(guān)系的,從再生器中清除處理器。
            關(guān)閉流對(duì)象。
            因此,我們看到的絕大多數(shù)情況服務(wù)處理器通過(guò)shutdown需要通過(guò)框架來(lái)清理工作,都是簡(jiǎn)單的允許缺省的掛勾函數(shù)得以被調(diào)用。如果你的應(yīng)用程序需求更多的關(guān)閉/清理規(guī)則,推

            薦的地方是你的處理器的handle_close()掛勾方法。僅僅是確保把ACE_Svc_Handler::destroy()函數(shù)人作為你的handle_close()的最后一個(gè)動(dòng)作,與框架清理行為的余下的行為合

            并。


            ?

            posted on 2006-08-28 09:36 Stone Jiang 閱讀(3234) 評(píng)論(0)  編輯 收藏 引用 所屬分類: ACE
            精品久久久久久久| 精品99久久aaa一级毛片| 国产精品久久久久久久app| 久久WWW免费人成一看片| 国产精品久久久久久吹潮| 久久黄视频| 久久久亚洲欧洲日产国码aⅴ | 国产精品久久久久久久久| 99久久国产综合精品网成人影院| 伊人情人综合成人久久网小说 | 国产精品久久久久久影院 | 国产欧美一区二区久久| 欧美日韩中文字幕久久久不卡| 久久夜色精品国产网站| 久久天天躁夜夜躁狠狠 | 伊人久久综合精品无码AV专区| 亚洲乱亚洲乱淫久久| 久久精品中文无码资源站| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲性久久久影院| 国产亚州精品女人久久久久久 | 久久九色综合九色99伊人| .精品久久久麻豆国产精品| 亚洲中文久久精品无码ww16| 久久一区二区三区99| 国产精品日韩欧美久久综合| 99久久综合狠狠综合久久止| 久久久久人妻精品一区二区三区| 国内精品久久久久影院薰衣草 | 久久亚洲中文字幕精品一区| 亚洲欧洲久久av| 亚洲欧美国产精品专区久久| 亚洲美日韩Av中文字幕无码久久久妻妇| 国产2021久久精品| 久久久久国产一区二区| 久久久国产精品| 中文精品99久久国产| 久久久亚洲欧洲日产国码是AV| 欧美黑人激情性久久| 久久精品中文闷骚内射| 久久99国产亚洲高清观看首页 |