• <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>
            面對(duì)現(xiàn)實(shí),超越自己
            逆水行舟,不進(jìn)則退
            posts - 269,comments - 32,trackbacks - 0
            Active Object 模式是Command模式的一種,是實(shí)現(xiàn)多線程控制的一項(xiàng)古老技術(shù) .

            在《敏捷軟件開發(fā)》這本書中描述的算法如下:
            1、構(gòu)造一個(gè)命令。(實(shí)現(xiàn)Command模式的一個(gè)命令)
            2、將該命令放入Active Object Engine(也就是放入一個(gè)隊(duì)列,LinkedList)
            3、從該Engine取出一個(gè)命令,執(zhí)行,若該命令沒有執(zhí)行過,設(shè)為執(zhí)行過,然后將自己加入隊(duì)列尾部,若執(zhí)行過,判斷該命令執(zhí)行需要的事件發(fā)生沒有,未發(fā)生,再將自己加入隊(duì)列尾部。事件發(fā)生了,將需要執(zhí)行的命令加入隊(duì)列尾部。

            Active Object模式不屬于《Design Pattern》23模式。實(shí)際上,她是一種特殊的Command Queue。其特殊之處在于:
            1. 隊(duì)列的擁有者會(huì)順序地執(zhí)行隊(duì)列中所有Command對(duì)象的Execute方法。(這個(gè)其實(shí)不算特殊)
            2.Command對(duì)象在自己的Execute方法結(jié)束前,可以把一個(gè)新的command對(duì)象(實(shí)際上常常是這個(gè)command對(duì)象自己)再加到隊(duì)列的尾部。
            看出來了嗎,這個(gè)隊(duì)列有可能不會(huì)終止的,他可以一直執(zhí)行下去。這個(gè)可以作為一個(gè)應(yīng)用或者服務(wù)的主模塊了,想像一下她可以作多少事情吧。
            《ASP》指出這個(gè)模式可以用來在一個(gè)線程中處理多任務(wù)的問題!!! ^_^ 太cool了。
            如何處理呢?你可以把每個(gè)command對(duì)象看作是一個(gè)任務(wù)。他在Execute函數(shù)中,處理自己的任務(wù),在任務(wù)告一段落時(shí),記錄自己的狀態(tài),然后把自己插入到隊(duì)列的尾部,結(jié)束Execute方法。當(dāng)隊(duì)列輪完一周后,又會(huì)再次執(zhí)行這個(gè)command對(duì)象的Execute方法。 ^_^ 很cool吧。
            那么這種方法和多線程的方法相比有什么有缺點(diǎn)呢?
            最大的優(yōu)點(diǎn)是,所有的command都在同一個(gè)線程中,因此切換時(shí),不需要進(jìn)入內(nèi)核模式!!超高效啊!!而且,可以有很多很多的command,數(shù)量上遠(yuǎn)遠(yuǎn)超過多線程的數(shù)量。
            缺點(diǎn)嘛,是這種方法需要用戶自己來實(shí)現(xiàn)調(diào)度,另外這其實(shí)是一種非剝奪模式的多任務(wù),如果command處理不好,就會(huì)連累其它所有的command,因此實(shí)際上比多線程要更復(fù)雜。(嘿嘿,程序員能夠怕麻煩嗎?)
            還有一點(diǎn),Active Object運(yùn)行于單線程,也就是說,她不能享受多處理器或多處理器核心帶來的性能上的改善。
            其實(shí),這最后一點(diǎn)是非常致命的一點(diǎn)。也就是說,在當(dāng)前intel的超線程CPU機(jī)器上,如果系統(tǒng)的負(fù)擔(dān)并不重的時(shí)候。Active Object的效率有可能比多線程更低。
            Anyway,這是一個(gè)非常有趣的模式。只是一般的程序員可能沒有機(jī)會(huì)用到。

            本文轉(zhuǎn)自:http://www.shnenglu.com/tx7do/archive/2010/02/28/108617.aspx
            posted on 2012-07-11 08:14 王海光 閱讀(816) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Design Pattern
            99久久精品国内| 久久精品国产99久久久香蕉| 久久免费国产精品一区二区| 久久久久久精品免费看SSS| 国产精品久久久久一区二区三区 | 国产精品久久久久久久久久免费| 99re久久精品国产首页2020| 国产午夜福利精品久久| 无码国内精品久久人妻麻豆按摩| av色综合久久天堂av色综合在| 色婷婷久久综合中文久久蜜桃av | 日韩精品久久久久久免费| 精品久久久久久久久中文字幕| 久久久久国产精品三级网| 77777亚洲午夜久久多人| 国产69精品久久久久9999| 久久精品极品盛宴观看| 九九久久自然熟的香蕉图片| 91精品国产91久久久久久蜜臀| 偷窥少妇久久久久久久久| 国产精品久久久久aaaa| 久久AV无码精品人妻糸列| 99久久精品免费观看国产| 久久久噜噜噜久久熟女AA片| 久久99精品久久久久久9蜜桃| 久久精品国产亚洲AV香蕉| 亚洲精品国精品久久99热| 精品免费久久久久国产一区| 性欧美大战久久久久久久久| 亚洲国产成人精品女人久久久| 久久国产亚洲精品麻豆| 日产精品久久久一区二区| 久久亚洲国产成人影院| 久久久受www免费人成| 久久午夜电影网| 久久亚洲综合色一区二区三区| 亚洲精品乱码久久久久久蜜桃不卡 | 欧美一区二区三区久久综| 日批日出水久久亚洲精品tv| 国产无套内射久久久国产| 狠狠人妻久久久久久综合|