(我只進行過win32下多線程程序的項目開發,類unix系統只是有過學習瞭解,因此有以偏概全的狀況請你們指正)
總結
不知道你們有沒有這種感受,掌握多線程程序的編寫好像是高端windows開發人才的必備的一種技能。(個人瞭解:類unix系統的的進程開銷比較小,彷彿用多進程開發居多)。作了一下簡要統計,在我作過的項目中(windows平臺下)幾乎都使用了多線程技術,可是其中所佔據的代碼量卻只是相對較小的一部分。
因此我總結出如下幾點:
1.多線程技術是不得不掌握的一種技術;
2.多線程技術不是得多用,而是在不得不用時使用;(這個有過多線程調試經驗的童鞋會明白的)
3.引入多線程的目的是爲了提升程序執行效率或者加強UI部分的用戶體驗,可是用很差會下降程序的執行效率(線程之間切換的開銷大),有時用戶體驗是好了,錯誤的使用卻致使了邏輯錯誤.......
4.數據一致性的考量(這個要是編寫時不注意,之後你就等着找bug找的吐血吧)
推薦
Linux之父Linus Torvalds曾經在炮轟C++時有這麼一點:一羣糟糕的程序員在使用C++......
若是有人要炮轟多線程技術也能夠說:一羣糟糕的程序員在使用多線程.......
若是想讓本身不成爲糟糕的多線程使用者,我想咱們必定要系統的學習並掌握多線程技術,結合我本身的經驗給你們推薦一些書和資料:
>專業的多線程書籍我首推侯捷老師的《Win32多線程程序設計》,看侯捷老師的書,在享受中學東西,美哉美哉;
>關於類unix系統的多線程幾本經典書籍裏都有講解《深刻理解計算機系統》《unix環境高級編程》...,我以爲雖然win32的線程和類unix的線程有些區別,可是思想上仍是一致的;
>多線程程序的編寫實現:一直以來,我就漸漸讓本身儘可能少用windows API ,多用c++ 標準庫和boost,一方面是感受他們比windows api設計的更方便合理,另外一方面我有從事類unix系統開發的打算,因此儘可能寫可移植的代碼,因此我推薦你們使用boost的多線程庫;