讀Chrome原始碼剖析
阿新 • • 發佈:2019-02-02
chrome就不用給大家介紹了,前幾天讀一位兄臺對他原始碼剖析的文章,自己也就拿來看了些,實在是水平有限,沒有深入進去。
只能說按自己的理解和兄臺的文章,說說自己的感受了,在chrome真正讓我有所感悟的是他的多執行緒的處理,很長一段時間來,自己在寫多執行緒的程式,後來把程式碼的維護工作交給了另外的同事,結果程式經常出現死鎖現象,俺不得不又去看看,並提出了一些注意點,再後來隨著系統通訊量的增加,鎖帶來的弊端開始顯現,隨著資料量規模的上升及應用的增多,程式越來越慢。
chrome帶來的多執行緒程式設計的思路給我了一個思路,可惜的是原來的程式太複雜,但終究有了一個重構的思路。
在兄臺的文章中有這麼一段,摘錄在此與大家共享:
一直在說Chrome在規避鎖的問題,那到底鎖是哪裡不好,犯了何等滔天罪責,落得如此人見人嫌恨不得先殺而後快的境地。《程式碼之美》的第二十四章“美麗的併發”中,Haskell設計人之一的Simon Peyton Jones總結了一下用鎖的困難之處,我罰抄一遍,如下:
1.鎖少加了,導致兩個執行緒同時修改一個變數;
2.鎖多加了,輕則妨礙併發,重則導致死鎖;
3.鎖加錯了,由於鎖和需要鎖的資料之間的聯絡,只存在於程式設計師的大腦中,這種事情太容易發生了;
4.加鎖的順序錯了,維護鎖的順序是一件困難而又容易出錯的問題;
5.錯誤恢復;
6.忘記喚醒和錯誤的重試;
7. 而最根本的缺陷,是鎖和條件變數不支援模組化的程式設計。比如一個轉賬業務中,A