• <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
            国产毛片久久久久久国产毛片| 无码人妻少妇久久中文字幕 | 久久精品国产精品亚洲精品| 国产成人综合久久精品红| 午夜天堂av天堂久久久| 亚洲综合婷婷久久| 久久精品人妻中文系列| 成人免费网站久久久| 亚洲日韩欧美一区久久久久我| 亚洲精品无码久久久久| 国产精品成人久久久久久久| 囯产精品久久久久久久久蜜桃| 99国内精品久久久久久久| 久久无码中文字幕东京热| 狠狠色丁香久久婷婷综| 久久久久久国产a免费观看黄色大片 | 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久久久波多野结衣高潮| 国产高潮国产高潮久久久91 | 久久亚洲私人国产精品vA| 99久久综合狠狠综合久久| 国产精品禁18久久久夂久| 2020国产成人久久精品| 久久丝袜精品中文字幕| 国产精品成人99久久久久 | 一级做a爰片久久毛片免费陪| 久久久久久免费一区二区三区| 无码专区久久综合久中文字幕| 无码任你躁久久久久久| 久久精品中文字幕第23页| 青青青青久久精品国产h| 久久亚洲精品成人AV| 亚洲狠狠婷婷综合久久蜜芽| 狠狠色婷婷久久综合频道日韩 | 久久久久这里只有精品| 国产午夜精品理论片久久| 色综合久久88色综合天天 | 久久亚洲国产成人精品性色| 人妻无码αv中文字幕久久| 久久综合精品国产二区无码| 国产午夜精品久久久久免费视|