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

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

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

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

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

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

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

在對誤解一的解釋中,可以看出作者是認爲並行編程也屬於併發編程的。是的,並行應該是屬於併發的一種,對併發的概念來說,並行可以認爲是併發的一種特殊情況。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章