Go是門很棒的語言。當它首次被宣告給這個世界時,所包含的特性令人瘋狂:語法簡潔,編譯速度非常快,執行效率高,支持鴨子類型,用它的并發原語處理問題非常直觀。在第一次使用go關鍵字建立goroutine時(這就是本書將要介紹的東西),我太高興了,與其他多種語言相比,我從未有過如此爽快的感覺。
多年來,我把Go代碼一點一點加入個人項目中,直到有一天,猛然發覺已經積累了上萬行之多。隨著社區的不斷發展,在Go中使用并發的最佳實踐話題越來越多。 有些開發者就他們的使用經驗進行了討論。 但在社區中關于如何較好的進行并發操作,并沒有一本完善的綜合指南。
正是基于這一點,我決定寫這本書。以希望大家能夠了解并掌握有關Go中并發性的高質量、全面的信息:如何使用它,如何將最佳實踐和模式整合到系統中,以及它們如何在所有系統中運行。 我盡力在這些考量之間取得平衡。
衷心希望這本書能給你帶來幫助!
* * * * *
學識淺薄,錯誤在所難免。我是長風,歡迎來Golang中國的群(211938256)就本書提出修改意見。
- 前序
- 誰適合讀這本書
- 章節導讀
- 在線資源
- 第一章 并發編程介紹
- 摩爾定律,可伸縮網絡和我們所處的困境
- 為什么并發編程如此困難
- 數據競爭
- 原子性
- 內存訪問同步
- 死鎖,活鎖和鎖的饑餓問題
- 死鎖
- 活鎖
- 饑餓
- 并發安全性
- 優雅的面對復雜性
- 第二章 代碼建模:序列化交互處理
- 并發與并行
- 什么是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運行時
- 任務調度