《C#併發編程經典實例》學習筆記-關於併發編程的幾個誤解

誤解一:併發就是多線程
實際上多線程只是併發編程的一種形式,在C#中還有不少更實用、更方便的併發編程技術,包括異步編程、並行編程、TPL 數據流、響應式編程等。
誤解二:只有大型服務器程序才須要考慮併發
服務器端的大型程序要響應大量客戶端的數據請求,固然要充分考慮併發。可是桌面程序和手機、平板等移動端應用一樣須要考慮併發編程,由於它們是直接面向最終用戶的,而如今用戶對使用體驗的要求愈來愈高。程序必須能隨時響應用戶的操做,尤爲是在後臺處理時(讀寫數據、與服務器通訊等),這正是併發編程的目的之一。
誤解三:併發編程很複雜,必須掌握不少底層技術
C# 和 .NET 提供了不少程序庫,併發編程已經變得簡單多了。尤爲是 .NET 4.5 推出了全新的 async 和 await 關鍵字,使併發編程的代碼減小到了最低限度。編程

上述摘自譯者序。
本書基本信息:
著    [美] Stephen Cleary
譯    相銀初服務器

市面上關於併發的技術書,大可能是Java相關。有個前輩推薦了這本書,耐心看了一遍,真心以爲真是不錯,決定精讀並寫一個系列筆記博客。前輩推薦的時候是去年年初,到如今決定寫博客,已經一年半過去,羞愧羞愧,執行力不高,但總歸是開始着手作了,但願能堅持下來。多線程

提到併發就不得不提並行,即並行(Parallel)和併發(Concurrent)的區別。
知乎的一個回答我以爲拿來解釋最合適不過,這個解釋的角度是從CPU爲出發點。
併發與並行的區別? - 劉志軍的回答 - 知乎
併發

併發是兩個隊列交替使用一臺咖啡機,並行是兩個隊列同時使用兩臺咖啡機異步

咖啡機指CPU,排隊的隊伍能夠是線程(thread)也能夠是進程(process)。
進程(process)和線程(thread)的概念描述打算獨立成文,下次就寫。async

在對誤解一的解釋中,能夠看出做者是認爲並行編程也屬於併發編程的。是的,並行應該是屬於併發的一種,對併發的概念來講,並行能夠認爲是併發的一種特殊狀況。異步編程

在後續的筆記中我會將書中的僞代碼實例嘗試寫成可運行的代碼,用於本身強化理解和記憶,這也是精讀的意義所在。寫的代碼有所不足之處,望不吝指教。線程

相關文章
相關標籤/搜索