最新IT書籍推介《Go語言併發之道》
作者簡介
Katherine Cox-Buday是一名電腦科學家,目前工作於 Simple online banking。她的業餘愛好包括軟體工程、創作、Go 語言(igo、baduk、weiquei) 以及音樂,這些都是她長期的追求,並且有著不同層面的貢獻。
目錄
前言 1
第1章 併發概述 9
摩爾定律,Web Scale和我們所陷入的混亂 10
為什麼併發很難? 12
競爭條件 13
原子性 15
記憶體訪問同步 17
死鎖、活鎖和飢餓 20
確定併發安全 28
面對複雜性的簡單性 31
第2章 對你的程式碼建模:通訊順序程序 33
併發與並行的區別 33
什麼是CSP 37
如何幫助你 40
Go語言的併發哲學 43
第3章 Go語言併發元件 47
goroutine 47
sync包 58
WaitGroup 58
互斥鎖和讀寫鎖 60
cond 64
once 69
池 71
channel 76
select 語句 92
GOMAXPROCS控制 97
小結 98
第4章 Go語言的併發模式 99
約束 99
for-select迴圈103
防止goroutine洩漏 104
or-channel 109
錯誤處理112
pipeline 116
構建pipeline的最佳實踐 120
一些便利的生成器 126
扇入,扇出 132
or-done-channel 137
tee-channel 139
橋接channel模式 140
佇列排隊143
context包 151
小結 168
第5章 大規模併發 169
異常傳遞169
超時和取消 178
心跳 184
複製請求197
速率限制199
治癒異常的goroutine 215
小結 222
第6章 goroutine和Go語言執行時 223
工作竊取223
竊取任務還是續體 231
向開發人員展示所有這些資訊 240
尾聲 240
附錄A 241
序言
前言
嘿,歡迎閱讀本書!很高興你已經拿起這本書開始閱讀,非常期待在接下來的6章中和你一起探索關於 Go語言併發程式設計的主題。
Go語言是一種美妙的語言。當它被創造並首次公開的時候,我帶著極大的興趣探索它:簡潔、編譯速度飛快、執行穩定、支援鴨子型別(ducktyping),讓我高興的是,它原生支援併發。當我第一次使用“go 關鍵字”建立一個goroutine的時候,(我保證)我開心得只剩傻笑了。我曾經用其他一些程式語言寫過併發程式,但我從未用過像Go語言這樣這麼容易實現併發的語言(我並不是說其他有這種特性的語言不存在,只是我沒用過)。我已經找到了我的Go語言最佳實踐。
在過去的幾年裡,我用Go語言寫個人的指令碼和專案,直到發現自己已經可以在成千上萬行程式碼的專案中暢遊。隨著語言的不斷髮展和社群的不斷壯大,我們一起找到了Go語言併發程式設計的最佳實踐。一些人就他們找到的模式進行討論,但在社群裡還沒有如何使用Go語言併發程式設計的綜合指南。
正是考慮到這一點,我才決定寫這本書。我希望可以讓社群瞭解到關於Go語言併發程式設計的一些全面且高質量的資訊:如何使用,最佳實踐,以及如何將它整合到你的系統中,還有它背後的工作原理。我竭盡全力均衡這些關注點。我希望這是一本對你有益的書。
PDF下載連結:https://pan.baidu.com/s/1kiM5x8nijwh3D18ZmgERsg 提取碼: 9eqt