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

            X-Matrix

            MMORPG無(wú)縫服務(wù)器設(shè)計(jì)

            線(xiàn)程模型:將任務(wù)與執(zhí)行分離

            ACE,Python和Java(我所知道的)中要獲得多線(xiàn)程的能力,都是通過(guò)從一個(gè)線(xiàn)程對(duì)象基類(lèi)繼承,重載特定的成員函數(shù)來(lái)實(shí)現(xiàn)。簡(jiǎn)單的來(lái)看,它用起 來(lái)也相當(dāng)簡(jiǎn)單,理解起來(lái)也不復(fù)雜,但,用過(guò)一段時(shí)間之后,就會(huì)發(fā)現(xiàn)處理復(fù)雜問(wèn)題時(shí),你會(huì)遇到許多的限制。 1.必須從一個(gè)線(xiàn)程對(duì)象基類(lèi)繼承嗎? 現(xiàn)在看來(lái)是的,否則,你只有使用系統(tǒng)OS提供的線(xiàn)程函數(shù)了。 2.我已經(jīng)有個(gè)類(lèi)了,它不是從線(xiàn)程對(duì)象基類(lèi)繼承的,我要使用多繼承嗎? 是的,除非重寫(xiě)。 3.我有一個(gè)函數(shù),想讓他在另一個(gè)線(xiàn)程執(zhí)行,一定要寫(xiě)個(gè)類(lèi)嗎? 是的。 4.我有一個(gè)類(lèi),它的每個(gè)成員函數(shù)我都想他們?cè)诹硗獾木€(xiàn)程中執(zhí)行,怎么辦? 線(xiàn)程對(duì)象基類(lèi)只有一個(gè)線(xiàn)程函數(shù),你必須通過(guò)某種通訊機(jī)制去讓它執(zhí)行不同的成員函數(shù)。 4.當(dāng)線(xiàn)程在執(zhí)行一個(gè)對(duì)象的某個(gè)成員時(shí),這個(gè)對(duì)象被刪除了怎么辦? 沒(méi)辦法,你必須自己管理對(duì)象的生存期。 嗚呼!問(wèn)題越來(lái)越多,該怎么辦?我們需要某種透明的線(xiàn)程模型,他能處理任意的需要被異步執(zhí)行的類(lèi)的成員函數(shù)或者普通函數(shù),它能提供一種策略,使得我們能 自動(dòng)管理處理不同線(xiàn)程中的對(duì)象的生存期。我們現(xiàn)在有了這種工具了嗎? 熟悉Boost的人可能覺(jué)得boost.thread也許提供了這種能力。很不幸,它滿(mǎn)足了一部分上述需求。 正在實(shí)現(xiàn)上述需求的一個(gè)線(xiàn)程模型。它將任務(wù)與任務(wù)的執(zhí)行者分離,它支持人任何的任務(wù),不論它是普通的函數(shù),還是具有任意參數(shù)的成員函數(shù),你均能將它作為 一個(gè)任務(wù)拋到其他的線(xiàn)程執(zhí)行,它是非侵入式,通過(guò)它所支持的生命期管理,你不用在擔(dān)心對(duì)象在異步執(zhí)行時(shí)被銷(xiāo)毀。它用模板實(shí)現(xiàn)。

            posted on 2008-08-23 22:25 x-matrix 閱讀(1731) 評(píng)論(14)  編輯 收藏 引用

            評(píng)論

            # re: 線(xiàn)程模型:將任務(wù)與執(zhí)行分離[未登錄](méi) 2008-08-24 10:18 Kevin Lynx

            通過(guò)functor,可以做到將成員函數(shù),C式函數(shù),operator(),等綁定為線(xiàn)程函數(shù).
            我覺(jué)得這種方式起碼比繼承重寫(xiě)某個(gè)虛函數(shù)來(lái)得靈活.
              回復(fù)  更多評(píng)論   

            # re: 線(xiàn)程模型:將任務(wù)與執(zhí)行分離 2008-08-24 15:17 戴爾筆記本

            我也是為獲得多線(xiàn)程的能力,通過(guò)從一個(gè)線(xiàn)程對(duì)象基類(lèi)繼承,重載特定的成員函數(shù)來(lái)實(shí)現(xiàn)。也許還有更好的方法。  回復(fù)  更多評(píng)論   

            # re: 線(xiàn)程模型:將任務(wù)與執(zhí)行分離 2008-08-24 23:28 x-matrix

            @戴爾筆記本
            這種方式是需要改變了.  回復(fù)  更多評(píng)論   

            # re: 線(xiàn)程模型:將任務(wù)與執(zhí)行分離 2008-08-25 10:02 bugs_killer

            有點(diǎn)吹毛求疵了.  回復(fù)  更多評(píng)論   

            # re: 線(xiàn)程模型:將任務(wù)與執(zhí)行分離 2008-08-25 11:06 x-matrix

            @bugs_killer
            我不這樣認(rèn)為。
              回復(fù)  更多評(píng)論   

            # re: 線(xiàn)程模型:將任務(wù)與執(zhí)行分離[未登錄](méi) 2008-08-25 14:25 陳梓瀚(vczh)

            我認(rèn)為這是Aspect-Oriented Programming處理的問(wèn)題,不是OO處理的問(wèn)題。想堅(jiān)持用OO的辦法,意味著重構(gòu)。于是你上述的問(wèn)題也就蕩然無(wú)存了,因?yàn)橹匦略O(shè)計(jì)的必然可以滿(mǎn)足要求。  回復(fù)  更多評(píng)論   

            # re: 線(xiàn)程模型:將任務(wù)與執(zhí)行分離 2008-08-25 14:45 x-matrix

            @ 陳梓瀚
            不論是面向?qū)ο螅€是面向方面,都要減少重構(gòu)。良好的設(shè)計(jì)會(huì)盡可能減少這種需要,即使重構(gòu),也要盡量減少原有代碼的修改。
            這個(gè)問(wèn)題是面向?qū)ο筮€是面向方面,值得考慮。  回復(fù)  更多評(píng)論   

            # re: 線(xiàn)程模型:將任務(wù)與執(zhí)行分離[未登錄](méi) 2008-08-25 17:05 陳梓瀚(vczh)

            如果是由于架構(gòu)的原因?qū)е滦枨蟛槐粷M(mǎn)足的話(huà),就不能執(zhí)著于減少修改了。  回復(fù)  更多評(píng)論   

            # re: 線(xiàn)程模型:將任務(wù)與執(zhí)行分離[未登錄](méi) 2008-08-26 15:04 hdqqq

            其實(shí)不一定要過(guò)度追求線(xiàn)程實(shí)現(xiàn),一般的實(shí)現(xiàn)方式是啟動(dòng)幾個(gè)線(xiàn)程提供對(duì)外服務(wù),有任務(wù)提交后,分配運(yùn)行。這樣可伸縮性也比較強(qiáng)。  回復(fù)  更多評(píng)論   

            # re: 線(xiàn)程模型:將任務(wù)與執(zhí)行分離 2008-08-26 15:13 x-matrix

            @hdqqq
            任務(wù)是什么呢?函數(shù)?類(lèi)成員函數(shù)?函數(shù)對(duì)象?函數(shù)/成員函數(shù)聲明是什么樣的?一定要滿(mǎn)足某種聲明形式嗎?我已有代碼不滿(mǎn)足怎么辦?這些都是要解決的問(wèn)題。
              回復(fù)  更多評(píng)論   

            # re: 線(xiàn)程模型:將任務(wù)與執(zhí)行分離[未登錄](méi) 2008-08-26 16:12 hdqqq

            任務(wù)只是抽象意義上的需要運(yùn)行的代碼,函數(shù)和成員函數(shù)只是對(duì)于人來(lái)說(shuō)的,對(duì)于機(jī)器來(lái)說(shuō),都是一樣的,至于已有函數(shù)滿(mǎn)不滿(mǎn)足接口我想是架構(gòu)需要考慮的問(wèn)題,其實(shí)一旦代碼編譯好了,其調(diào)用方式就定了,如果非要滿(mǎn)足所有的調(diào)用方式,可能rpc或者com的方式更適合一些。
            我以前寫(xiě)的關(guān)于 函數(shù)和線(xiàn)程方面調(diào)用的文章。

            http://blog.csdn.net/hdqqq/archive/2005/06/29/407674.aspx  回復(fù)  更多評(píng)論   

            # re: 線(xiàn)程模型:將任務(wù)與執(zhí)行分離 2008-08-26 16:37 x-matrix

            @hdqqq
            我覺(jué)得解決這個(gè)問(wèn)題非模板莫屬,其他的方式無(wú)一例外都需要用戶(hù)添加一堆對(duì)用戶(hù)來(lái)說(shuō)根本沒(méi)任何作用的代碼。看看com,里面一堆的古怪的符號(hào),光名字,已經(jīng)讓人惡心。  回復(fù)  更多評(píng)論   

            # re: 線(xiàn)程模型:將任務(wù)與執(zhí)行分離 2008-08-31 13:09 hsen

            好像你要講的就是boost::thread,我沒(méi)猜錯(cuò)吧?
              回復(fù)  更多評(píng)論   

            # re: 線(xiàn)程模型:將任務(wù)與執(zhí)行分離 2008-09-02 10:11 x-matrix

            @hsen
            不是。
              回復(fù)  更多評(píng)論   


            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            公告

            MMORPG無(wú)縫服務(wù)器論壇
            Google Groups
            xmatrix
            Visit this group

            導(dǎo)航

            統(tǒng)計(jì)

            留言簿(2)

            隨筆檔案

            最新評(píng)論

            閱讀排行榜

            久久www免费人成精品香蕉| 精品久久久无码中文字幕天天| 久久久久国产日韩精品网站| 久久精品成人免费看| 久久99热这里只有精品国产| 久久精品国产精品亚洲精品| 久久精品国产久精国产一老狼| 综合久久精品色| 国产成人精品久久二区二区| 久久久九九有精品国产| 四虎国产精品免费久久5151 | 欧美日韩久久中文字幕| 性做久久久久久久| 国产精品无码久久四虎| 亚洲午夜久久久久久噜噜噜| 四虎国产永久免费久久| 亚洲精品午夜国产VA久久成人| 久久午夜电影网| 香蕉久久夜色精品升级完成| 国产亚洲色婷婷久久99精品91 | 久久综合给合久久狠狠狠97色| 欧美黑人又粗又大久久久| 久久久久久国产a免费观看不卡| 一级a性色生活片久久无| 美女写真久久影院| 久久棈精品久久久久久噜噜| 亚洲国产精品综合久久一线| 国产成人久久精品麻豆一区| 精品久久久久久亚洲| 色偷偷久久一区二区三区| 日产精品久久久久久久| 久久久久无码中| 一本久久久久久久| 青青青国产成人久久111网站| 狠狠色丁香久久婷婷综合| 久久精品国产欧美日韩| 色综合久久久久| 香蕉99久久国产综合精品宅男自 | 国产精品久久久久无码av| 蜜臀久久99精品久久久久久小说| 思思久久99热只有频精品66|