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

            ATL COM初探(1)

             

            我沒有看過任何的COM書籍,以下總結均是我個人在ATL框架下的實驗所得,如有錯誤望指正。目前的實驗都是單進程中的,至于跨進程的實驗還未進行。

            Apartment:

            這是一個抽象的概念,我簡單的將其理解為作用域(COM對象的生存空間)。可以分為Single-Threaded Apartment(STA)和Multi-Threaded Apartment(MTA),至于Neutral Apartment, Thread Neutral Apartment, Neutral Threaded Apartment(NA, TNA, NTA)還沒接觸過。一個進程中可以存在多個STA,但只能存在一個MTA。創建COM對象所需要的Apartment類型不存在的時候,系統會自行創建。

            主STA:

            在進程中沒有任何STA的情況下,第一個初始化的STA(包括之前存在STA但已經退出的情況)稱為主STA。在獲取(創建)單線程COM對象時,如果在沒有主STA的情況下(哪怕存在STA,但主STA退出了),系統會向RPC申請一個線程來創建一個主STA,換句話說就是STA是無法改變自身的主從屬性的,主從屬性從初始化的時刻其就決定了。系統進行同步的STA至少需要一個消息循環,否則代理對象會被阻塞(系統創建的STA會自帶一個消息循環)。

            單線程COM:

            只能存在于主STA,在非主STA中系統會使用代理對象進行訪問并利用窗口消息進行同步,也就是說只有主STA得到的是原始指針,其他的Apartment得到的均為代理指針。如果我們想將某個COM對象約束在某個線程中,那么這個模型是很適合的。只要這個線程初始化關聯主STA,那么這個模型的COM對象都會存在于這個線程了(因為一個STA作用域是不能跨線程的)。

            單元COM:

            存在于STA,在非所屬STA中系統會使用代理對象進行訪問并利用窗口消息進行同步,也就是說只有在STA中創建得到的是原始指針,Marshal得到的都是代理指針,MTA中創建得到的也是代理指針。

            兩者COM:

            STA和MTA創建均得到原始指針。在與對象的創建不同的Apartment中得到的將是代理指針(可以指定得到原始指針,但這會失去系統對STA對象的訪問同步),若創建的是STA對象,那么系統會利用窗口消息進行同步;若創建的是MTA對象,系統不會進行同步。

            自由COM:

            只存在于MTA,在STA中創建或者Marshal得到的都是代理指針,但系統不會進行同步。在MTA中創建和Marshal得到的都是原始指針。

            中性COM:

            STA和MTA創建均得到代理指針。Marshal得到的代理指針均為同一個指針,系統不會進行同步。只能得到代理指針可能是因為其只存在于NA中的緣故吧。

            作者: Evil.Ghost 發表于 2011-03-11 11:12 原文鏈接

            評論: 0 查看評論 發表評論


            最新新聞:
            · 蘋果iPad 2通過3C認證 最晚5月國內上市(2011-04-10 09:18)
            · 盲目依賴iPhone等工具導航 英國驢友迷路多(2011-04-10 09:14)
            · 趣談:想擔任CEO的話,最好是去蘋果工作,其次是微軟,再才是Google(2011-04-10 08:26)
            · 騰訊將建立新數據中心,規模為蘋果的兩倍(2011-04-10 08:25)
            · 輕量化的微型博客Tumblr(2011-04-10 08:03)

            編輯推薦:非戰之罪,從永中Office談起

            網站導航:博客園首頁  我的園子  新聞  閃存  小組  博問  知識庫

            posted on 2011-03-11 11:12 EvilGhost 閱讀(399) 評論(0)  編輯 收藏 引用

            導航

            統計

            常用鏈接

            留言簿

            隨筆檔案(12)

            文章檔案(1)

            最新隨筆

            搜索

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            久久丫忘忧草产品| 亚洲中文字幕久久精品无码APP| 中文字幕无码免费久久| 久久久久久久免费视频| 久久狠狠爱亚洲综合影院 | 久久精品国产亚洲AV久| 亚洲精品乱码久久久久久久久久久久 | 国产农村妇女毛片精品久久| 亚洲欧美成人久久综合中文网| 久久综合亚洲欧美成人| 精品99久久aaa一级毛片| 国产亚洲精品久久久久秋霞| 精品久久久久久无码人妻蜜桃| 亚洲va中文字幕无码久久 | 亚洲国产成人久久综合区| 久久久久黑人强伦姧人妻| 99久久国产主播综合精品| 久久久久亚洲AV无码专区桃色| 精品久久久一二三区| 亚洲精品高清国产一久久| 日韩人妻无码精品久久免费一| 99久久综合国产精品二区| 久久精品无码一区二区WWW| 久久精品综合一区二区三区| 久久久久久曰本AV免费免费| 囯产极品美女高潮无套久久久| 亚洲伊人久久综合影院| 亚洲国产日韩欧美综合久久| 伊人久久无码精品中文字幕| 亚洲乱码中文字幕久久孕妇黑人| 日韩人妻无码精品久久久不卡| 欧美亚洲国产精品久久高清 | 久久99热这里只频精品6| 久久久久免费看成人影片| 久久夜色精品国产噜噜亚洲a| 99久久精品国产一区二区三区| 久久综合狠狠综合久久97色| 亚洲精品综合久久| 久久精品国产精品亚洲| 久久精品夜色噜噜亚洲A∨| 久久精品国产亚洲AV麻豆网站 |