(我只進行過win32下多執行緒程式的專案開發,類unix系統只是有過學習了解,所以有以偏概全的情況請大家指正)
總結
不知道大家有沒有這種感覺,掌握多執行緒程式的編寫好像是高階windows開發人才的必備的一種技能。(我的了解:類unix系統的的程序開銷比較小,彷彿用多程序開發居多)。做了一下簡要統計,在我做過的專案中(windows平台下)幾乎都使用了多執行緒技術,但是其中所佔據的**量卻只是相對較小的一部分。
所以我總結出以下幾點:
1.多執行緒技術是不得不掌握的一種技術;
2.多執行緒技術不是得多用,而是在不得不用時使用;(這個有過多執行緒除錯經驗的童鞋會明白的)
3.引入多執行緒的目的是為了提高程式執行效率或者增強ui部分的使用者體驗,但是用不好會降低程式的執行效率(執行緒之間切換的開銷大),有時使用者體驗是好了,錯誤的使用卻導致了邏輯錯誤.......
4.資料一致性的考量(這個要是編寫時不注意,以後你就等著找bug找的**吧)
推薦
linux之父linus torvalds曾經在炮轟c++時有這麼一點:一群糟糕的程式設計師在使用c++......
如果有人要炮轟多執行緒技術也可以說:一群糟糕的程式設計師在使用多執行緒.......
如果想讓自己不成為糟糕的多執行緒使用者,我想我們一定要系統的學習並掌握多執行緒技術,結合我自己的經驗給大家推薦一些書和資料:
>專業的多執行緒書籍我首推侯捷老師的《win32多執行緒程式設計》,看侯捷老師的書,在享受中學東西,美哉美哉;
>關於類unix系統的多執行緒幾本經典書籍裡都有講解《深入理解計算機系統》《unix環境高階程式設計》...,我覺得雖然win32的執行緒和類unix的執行緒有些區別,但是思想上還是一致的;
>資料:我首推ibm開發者**上的多執行緒搜尋鏈結
這裡有很多高質量的多執行緒技術文章;
>多執行緒程式的編寫實現:一直以來,我就漸漸讓自己盡量少用windows api ,多用c++ 標準庫和boost,一方面是感覺他們比windows api設計的更方便合理,另一方面我有從事類unix系統開發的打算,所以盡量寫可移植的**,所以我推薦大家使用boost的多執行緒庫;
yaocoder
談談多執行緒
使用乙個東西之前,知道其為什麼會誕生,才能夠好的知道其有點或者好處,更有效地使用。要說執行緒的好處,必須要提到程序。程序的出現是通過犧牲了cpu時間和記憶體空間來換取能夠同時執行,或者叫模仿同時執行,也就是併發。那麼,執行緒呢?現成的誕生,是因為程序有缺陷,程序的缺陷是啥?剛剛我們說程序浪費了記憶體...
談談多執行緒
其實對於死鎖,很多人會望而生畏。而事實上,死鎖的原理非常之簡單。死鎖的本質就是,a物件佔據了資源x,b也差不多同時占用了資源y。在x和y資源都沒有釋放的時候,a和b試圖申請資源y和x。於是a在等b釋放y,b在等a釋放x。更直白一點,乙個男人和女人相互暗戀,男人想要女的先示愛,他才向女的表白,女的想要...
菜鳥 也談談多執行緒
做開發快一年了,大部分都是有的dan執行緒,也從來沒有考慮去去多執行緒處理一些東西。今天突然 看到 petshop的多執行緒 就貼出來吧 static void main console.writeline processing started.press enter to stop.console...