在我閱讀技術書籍時,通常會跳到那些能夠激起我興趣的部分,或者,如果我試圖提高新技術的效率,我會瘋狂地剔除與當前工作直接相關的部分 。 無論你的使用初衷是什么,這里是本書的路線圖,希望它能幫助你,引導你到需要的地方。
### 第一章 并發編程介紹
本章介紹了并發的歷史,闡述并發是一個重要的概念,并討論了一些使并發難以正確的基本問題。 同時簡要介紹了Go如何緩解這些負擔。
如果你有相關的知識,或者只是想了解如何使用Go的并發原語技術,可以跳過本章。
### 第二章 代碼建模:序列化交互處理
本章介紹了Go的設計的一些初衷。 這將有助于為你提供與Go社區中其他人交談的背景信息,并幫助你了解為什么代碼會按照的這樣那樣的思考方式運行。
### 第三章 Go的并發構建模塊
這一章我們將開始深入研究Go并發原語的語法。 還會介紹標準庫中的sync包,它負責處理Go的內存訪問同步。 如果你之前沒有在Go中使用過并發,但希望立即了解正式內容,那么這里就是開始的地方。
在Go中編寫并發代碼的所需基礎知識很少,在這里主要是將Go的概念與其他語言和并發模型進行比較。 嚴格地說,沒有必要理解這些東西,但這些概念可以幫助你全面了解Go語言的并發特性。
### 第四章 Go的并發編程范式
在本章中,我們將著眼于如何把Go的并發原語組合在一起來形成有用的模式。 這些模式既可以幫助我們解決問題,也可以避免在使用中常見的錯誤。
如果你已經使用Go編寫了一些并發代碼,本章仍然是有用的。
### 第五章 大規模并發
在本章中,我們將學習過的模式組合成更大的程序,展示服務和分布式系統中常用的經驗。
### 第六章 Goroutines和Go運行時
本章介紹Go運行時如何處理調度goroutines。 這對于那些想了解Go的運行時內部機制的人來說會很有意思。
### 附錄
附錄列舉了各種工具和命令,可以幫助你更輕松地編寫和調試并發程序。
***所有示例皆運行于main函數下,譯者程序基于go 1.10.1運行于windows7系統下,且全部驗證無誤***
- 前序
- 誰適合讀這本書
- 章節導讀
- 在線資源
- 第一章 并發編程介紹
- 摩爾定律,可伸縮網絡和我們所處的困境
- 為什么并發編程如此困難
- 數據競爭
- 原子性
- 內存訪問同步
- 死鎖,活鎖和鎖的饑餓問題
- 死鎖
- 活鎖
- 饑餓
- 并發安全性
- 優雅的面對復雜性
- 第二章 代碼建模:序列化交互處理
- 并發與并行
- 什么是CSP
- CSP在Go中的衍生物
- Go的并發哲學
- 第三章 Go的并發構建模塊
- Goroutines
- sync包
- WaitGroup
- Mutex和RWMutex
- Cond
- Once
- Pool
- Channels
- select語句
- GOMAXPROCS
- 結論
- 第四章 Go的并發編程范式
- 訪問范圍約束
- fo-select循環
- 防止Goroutine泄漏
- or-channel
- 錯誤處理
- 管道
- 構建管道的最佳實踐
- 便利的生成器
- 扇入扇出
- or-done-channel
- tee-channel
- bridge-channel
- 隊列
- context包
- 小結
- 第五章 可伸縮并發設計
- 錯誤傳遞
- 超時和取消
- 心跳
- 請求并發復制處理
- 速率限制
- Goroutines異常行為修復
- 本章小結
- 第六章 Goroutines和Go運行時
- 任務調度