原文:http://www.cnblogs.com/duguguiyu/archive/2008/10/02/1303095.html
開(kāi)源是口好東西,它讓這個(gè)充斥著大量工業(yè)垃圾代碼和教材玩具代碼的行業(yè),多了一些藝術(shù)氣息和美的潛質(zhì)。它使得每個(gè)人,無(wú)論你來(lái)自米國(guó)紐約還是中國(guó)鐵嶺,都有機(jī)會(huì)站在巨人的肩膀上,如果不能,至少也可以抱一把大腿。。。
現(xiàn)在我就是來(lái)抱大腿的,這條粗腿隸屬于Chrome(開(kāi)源項(xiàng)目名稱其實(shí)是Chromium,本來(lái)Chrome這個(gè)名字就夠晦澀了,沒(méi)想到它的本名還更上一層樓...),Google那充滿狼子野心的瀏覽器。每一個(gè)含著金勺子出生的人都免不了被仰慕并被唾罵,Chrome也不例外。關(guān)于Chrome的優(yōu)劣好壞討論的太多了,基本已經(jīng)被嚼成甘蔗渣了,沒(méi)有人愿意再多張一口了。俗話說(shuō),內(nèi)行看門道外行看熱鬧,大部分所謂的外行,是通過(guò)使用的真實(shí)感受來(lái)評(píng)定優(yōu)劣的,這無(wú)疑是最好的方式。但偏偏還是有自詡的內(nèi)行,喜歡說(shuō)內(nèi)行話辦外行事,一看到Chrome用到多進(jìn)程就說(shuō)垃圾廢物肯定低能。拜托,大家都是搞技術(shù)的,你知道多進(jìn)程的缺點(diǎn),Google也知道,他們不是政客,除了搞個(gè)噱頭扯個(gè)蛋就一無(wú)所知了,人家也是有臉有皮的,寫一坨屎一樣的開(kāi)源代碼放出來(lái)遭世人恥笑難道會(huì)很開(kāi)心?所謂技術(shù)的優(yōu)劣,是不能一概而論的,同樣的技術(shù)在不同場(chǎng)合不同環(huán)境不同代碼實(shí)現(xiàn)下,效果是有所不同的。既然Chrome用了很多看上去不是很美的技術(shù),我們是不是也需要了解一下它為什么要用,怎么用的,然后再開(kāi)口說(shuō)話?(恕不邀請(qǐng),請(qǐng)自行對(duì)號(hào)入座...)。。。
人說(shuō)是騾子是馬拉出來(lái)遛遛,Google已經(jīng)把Chrome這匹驢子拉到了世人面前,大家可以隨意的遛。我們一直自詡是搞科學(xué)的,就是在努力和所謂的藝術(shù)家拉開(kāi),人搞超女評(píng)委的,可以隨意塞著屁眼用嘴放屁,楞把李天王說(shuō)是李天后,你也只能說(shuō)他是藝術(shù)品位獨(dú)特。你要搞科學(xué)就不行,說(shuō)的不對(duì),輕的叫無(wú)知,重的叫學(xué)術(shù)欺詐,結(jié)果一片慘淡。所以,既然代碼都有了,再說(shuō)話,就只能當(dāng)點(diǎn)心注點(diǎn)意了,先看,再說(shuō)。。。
我已經(jīng)開(kāi)始遛Chrome這頭驢了,確切一點(diǎn),是頭壯碩的肥驢,項(xiàng)目總大小接近2G。這樣的龐然大物要從頭到腳每個(gè)毛孔的大量一遍,那估計(jì)不咽氣也要吐血的,咱又不是做Code review,不需要如此拼命。每一個(gè)好的開(kāi)源項(xiàng)目,都像是一個(gè)美女,這世界沒(méi)有十全十美的美女,自然也不會(huì)有樣樣杰出的開(kāi)源項(xiàng)目。每個(gè)美女都有那么一兩點(diǎn)讓你最心動(dòng)不已或者倍感神秘的,你會(huì)把大部分的注意力都放在上面細(xì)細(xì)品味,看開(kāi)源,也是一樣。Chrome對(duì)我來(lái)說(shuō),有吸引力的地方在于(排名分先后...):
- 它是如何利用多進(jìn)程(其實(shí)也會(huì)有多線程一起)做并發(fā)的,又是如何解決多進(jìn)程間的一些問(wèn)題的,比如進(jìn)程間通信,進(jìn)程的開(kāi)銷;
- 做為一個(gè)后來(lái)者,它的擴(kuò)展能力如何,如何去權(quán)衡對(duì)原有插件的兼容,提供怎么樣的一個(gè)插件模型;
- 它的整體框架是怎樣,有沒(méi)有很NB的架構(gòu)思想;
- 它如何實(shí)現(xiàn)跨平臺(tái)的UI控件系統(tǒng);
- 傳說(shuō)中的V8,為啥那么快。
但Chrome是一個(gè)跨平臺(tái)的瀏覽器,其Linux和Mac版本正在開(kāi)發(fā)過(guò)程中,所以我把所有的眼光都放在了windows版本中,所有的代碼剖析都是基于windows版本的。話說(shuō),我本是瀏覽器新手、win api白癡以及并發(fā)處理的火星人,為了我的好奇投身到這個(gè)溜驢的行業(yè)中來(lái),難免有學(xué)的不到位看的走眼的時(shí)候,各位看官手下超生,有錯(cuò)誤請(qǐng)指正,實(shí)在看不下去,回家自己牽著遛吧。。。
扯淡實(shí)在是個(gè)體力活,所以后面我會(huì)少扯淡多說(shuō)問(wèn)題。。。
關(guān)于Chrome的源碼下載和環(huán)境配置,大家看 這里(windows版本),只想強(qiáng)調(diào)一點(diǎn),一定要嚴(yán)格按照說(shuō)明來(lái)配置環(huán)境,特別是vs2005的補(bǔ)丁和windows SDK的安裝,否則肯定是編譯不過(guò)的。。。
最后,寫這部分唯一不是廢話的內(nèi)容,請(qǐng)記住以下這幅圖,這是Chrome最精華的一個(gè)縮影,如果你還有空,一定要去 這里 進(jìn)行閱讀,其中重中之重是 這一篇 。。。
圖1 Chrome的線程和進(jìn)程模型
出處:Venus神廟
責(zé)任編輯:bluehearts
上一頁(yè) 下一頁(yè) Chrome的多線程模型 上
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|