新的代碼已經(jīng)上傳,請(qǐng)?jiān)?https://x-framework.googlecode.com/svn/trunk 更新
這一次的更新有些倉(cāng)促,主要是有一些網(wǎng)友希望能早些看到chrome的tab頁(yè)效果的具體實(shí)現(xiàn),目前來(lái)講還有一些沒(méi)實(shí)現(xiàn)的地方,會(huì)導(dǎo)致一些bug,下載代碼調(diào)試的時(shí)候,請(qǐng)忽視異常,勇敢的按下f5,不能正常退出請(qǐng)終止調(diào)試或者殺掉進(jìn)程,任何崩潰不能退出的地方都有可能,僅故學(xué)習(xí)參考。
一些截圖:
我認(rèn)為chrome的架構(gòu)在三個(gè)方面做的非常好:通知系統(tǒng)(線程模型/觀察者模式)、preference系統(tǒng)和extension擴(kuò)展系統(tǒng),非常具有互聯(lián)網(wǎng)客戶端特征,大部分功能都可以重用。適合搭建互聯(lián)網(wǎng)客戶端平臺(tái),然而在中國(guó)能駕馭如此全面架構(gòu)的互聯(lián)網(wǎng)企業(yè)應(yīng)該也不多,小步跑多迭代需要依賴可靠的平臺(tái)。其多進(jìn)程的架構(gòu)模型,好處自然不用多說(shuō),然而需要的架構(gòu)水平之高恐怕很難在實(shí)際開(kāi)發(fā)中真正全部跑起來(lái)。
下面是所在團(tuán)隊(duì)使用chrome遇到問(wèn)題時(shí)候,我做的一些研究分析,在分析前我對(duì)chrome內(nèi)部的線程對(duì)象關(guān)系也很模糊,希望對(duì)他人有用。
chrome在線程和對(duì)象之間運(yùn)作的一些基礎(chǔ)技巧,總體來(lái)講使用了三種設(shè)施,而不是一刀切,一個(gè)不規(guī)范的報(bào)告如下:
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
同一線程同一對(duì)象的方法異步調(diào)用 ScopedRunnableMethodFactory能保證對(duì)象自身異步方法調(diào)用的安全性
同一線程不同對(duì)象之間的通知 調(diào)用者派生NotificationObserver,通過(guò)NotificationRegistrar把自己注冊(cè)到通知系統(tǒng),通知源觸發(fā)NotificationService 訂閱模式,線程內(nèi)同步調(diào)用,不存在對(duì)象生命周期的問(wèn)題
MessageLoopProxy是線程安全的引用計(jì)數(shù)對(duì)象,內(nèi)部封裝了線程消息循環(huán),MessageLoop銷毀的時(shí)候會(huì)置空其MessageLoopProxy中的消息循環(huán),支持線程安全的異步調(diào)用,適合在不同線程之間回調(diào),回調(diào)過(guò)程是異步的,所以牽扯到的參數(shù)必須考慮對(duì)象生命周期以及對(duì)象方法調(diào)用的線程問(wèn)題。我的想法就是回調(diào)的對(duì)象最好是生命周期跟application的一致的大對(duì)象,充當(dāng)manager(這也正是一個(gè)管理者該做的事情),這樣就能維持回調(diào)對(duì)象的合法性。
chrome推薦多使用非線程安全對(duì)象,也就是對(duì)象方法的執(zhí)行都在對(duì)象創(chuàng)建的線程
Application<----------------------------------------------------------
|--------|... |
V V |
UI線程 文件讀寫線程 數(shù)據(jù)庫(kù)讀寫線程 網(wǎng)絡(luò)線程 ... |
UIMgr FileIOMgr DatabaseIOMgr NetIOMgr |
Obj... Obj... ... ... |
Obj... Obj... ... ... ---
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
在chrome中運(yùn)用最多的是第二種技法,因?yàn)楸旧砭蜎](méi)有那么多對(duì)象需要跨線程;其次是第三種,因?yàn)榛ヂ?lián)網(wǎng)客戶端確實(shí)存在不少的多線程數(shù)據(jù)管理;最后是第一種技法,這種情況較為少見(jiàn)。
至于全面詳盡的剖析,我沒(méi)有精力或者暫時(shí)沒(méi)有勇氣去整理。后面代碼的更新可能也會(huì)減緩,自己會(huì)考慮在如何使用這套框架做一些東西。
posted on 2011-09-14 23:45
萬(wàn)連文 閱讀(7329)
評(píng)論(31) 編輯 收藏 引用 所屬分類:
小作品