近日,因為即将離開目前的工作機關,處于工作交接的階段,工作不太忙。
又因朋友給介紹了一家公司,做多線程方面的研發,問及我對多線程了解的程度,我坦誠的說了解的不多。
這就使我有了機會去接觸這本書——《win32多線程程式設計》。當時隻是打算随便找本書補一下自己在這個方面知識的缺陷,當看到這本書的譯者是侯捷老師的時候,我就知道這本書一定是本好書。
這些天用了些零碎的時間把這本書的前4章看了下,有一些小體會,記錄下來,留給自己總結提高,如果能對别人有幫助,那是再好不過了。
近幾個月一直在埋頭寫程式和分析程式,很少有時間真正的跳出來去認真讀本書。但是現在不得不承認,這幾個月的埋頭分析程式讓我對很多知識點的了解不僅僅停留在理論階段了。消息分發機制、資源、異步函數、回調、notify、引用計數、信号量、變量命名等這些知識點通過這幾個月的不斷使用,了解的層次比原來要深上不少。之是以啰嗦的把這些裡出來,是因為這些知識點在《win32多線程程式設計》前四章中多少都有涉及,也是對這些知識點的了解讓我一個從未真正接觸過多線程的人在閱讀這本書的時候覺得遊刃有餘。
異步函數,多個線程執行的時候,每個線程不就是個一步執行的函數嗎?你把線程創立後,他們會按照你傳入的函數去執行自己的操作,而你不用管他們,可以繼續執行自己的操作。
引用計數,這個曾困擾我多次的問題,被我搞明白了以後,在這裡用的很輕松。就像是一個可以供多人使用的東西,每個人使用的時候,都會使使用的人數增加1個,如果有人停止了使用,就把使用的人數減掉1個。這個東西隻有在沒人使用的時候才可以被拿走或者銷毀掉。
變量命名,一個看起來很低級的一個問題。不得不否認,如果沒有參加過大規模商業軟體的開發,僅僅停留在個人練習或者要求不嚴格的小系統的開發的時候,變量命名是不會太被重視的一個東西。這直接導緻的一個後果是,讀程式的時候,見到那些命名很長的變量名,會有一種輕微的恐懼感,讓人覺的很煩。以前每次看到windows程式設計那些繁瑣的函數名和變量名,我就覺的煩躁。經過了這幾個月對程式設計規範的不斷加強,對大量程式的閱讀,現在已經有些愛上了這些看起來很複雜的命名,因為它可以讓你一眼知道這個變量到底是用來幹什麼的。這就是自注釋。
程序和線程的關系,互斥,死鎖,這些知識點對計算機專業畢業的學生都不陌生,這是當年作業系統考試的重點,相信沒有人會忘記這些東西。
總結起來,前4章的感覺就是,如果你的作業系統的那點知識還沒忘光,而且你對異步、引用計數、消息分發機制并不陌生的話,這些内容會讓你感覺很流暢。在流暢的閱讀快感中,你還會有意外的驚喜,有些觀點或者描述把一些一直以來覺的複雜的東西簡單化了。
PS:現在越來越容易跑題了,參雜了不少這幾個月的感觸。