• <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++博客 首頁 新隨筆 聯系 聚合 管理
              64 Posts :: 3 Stories :: 22 Comments :: 0 Trackbacks

            小技巧: 當ACE_Svc_Handler關閉時使用的默認行為

            Stone Jiang

            上一篇我們看了ACE_Svc_Handler::open()掛勾函數提供默認行為的一些技巧。因為在大多數情況下,它完成了服務創(chuàng)建時所需的所有事情:為輸入事件注冊新處理器和返回。


            在ACE_Svc_Handler中關閉操作的默認行為要比在open()中初始化的代碼更為復雜。這是因為關閉時的掛勾函數包含了反應式(reactive)關閉和主動式(active-object)關閉兩種情

            況,它們有相同的效果:刪除所有在反應器注冊的事件和確保刪除ACE_Svc_handler的派生類的對象。

            ?

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


            主動對象式關閉(close()): 當ACE_Svc_Handler 派生的對象通過activate()函數轉變?yōu)橹鲃訉ο螅幚砥鞯牡膕vc()方法在它產生的線程中運行后進行回調。當svc()返回時,線程

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

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

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

            對象的生命期。destroy()函數應遵守這樣的規(guī)則來避免出現資源泄漏。


            無論ACE_Svc_Handler對象是反應式銷毀還是主動式銷毀,都會引起相同的事情發(fā)生:~ACE_Svc_Handler() (處理器的析構函數)調用ACE_Svc_Handler::shutdown()函數完成服務處

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

            ?

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

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

            并。


            ?

            posted on 2006-08-28 09:36 Stone Jiang 閱讀(3225) 評論(0)  編輯 收藏 引用 所屬分類: ACE
            色综合久久精品中文字幕首页| 久久亚洲国产成人影院网站| 久久精品国产亚洲AV香蕉| 成人久久免费网站| 久久久中文字幕| 久久精品无码一区二区WWW| 久久久中文字幕| 亚洲欧美日韩中文久久 | 很黄很污的网站久久mimi色| 久久国产影院| 999久久久无码国产精品| 一极黄色视频久久网站| 97久久久久人妻精品专区| 亚洲国产视频久久| 91精品国产色综久久| 久久久久无码精品国产不卡| 久久国产免费直播| 久久国产一区二区| 无码人妻久久一区二区三区免费丨| 亚洲国产成人久久精品影视| 亚洲午夜久久久久久久久久| 久久AAAA片一区二区| 亚洲国产精品久久久久网站| 99久久精品国产一区二区 | 亚洲国产一成久久精品国产成人综合 | 91久久婷婷国产综合精品青草| 久久婷婷五月综合97色直播| 久久99精品久久久久久| 三上悠亚久久精品| 日本强好片久久久久久AAA| 久久久国产视频| 久久天天婷婷五月俺也去| 久久久久无码精品| 丁香久久婷婷国产午夜视频| 国产精品久久久久久一区二区三区| 久久狠狠爱亚洲综合影院| 色妞色综合久久夜夜| 97久久婷婷五月综合色d啪蜜芽| 欧美亚洲国产精品久久| 国色天香久久久久久久小说| 日韩人妻无码一区二区三区久久|