
square-gopher.png
并發(fā)是一種設(shè)計
- 將您的程序設(shè)計為獨立進程的集合
- 將這些進程設(shè)計為并行運行
- 通過設(shè)計讓您的代碼無論是同步還是異步結(jié)果并沒有差異

golang.jpg
關(guān)注并發(fā)的細節(jié)
- 通過獨立的任務(wù)來組織您的代碼
- 確保沒有 race conditions(競爭條件)
- 確保沒有 deadlocks (鎖死)
- 更多工作并發(fā)進行
Communicaing Sequential Process(CSP)
go 語言的并發(fā)模型設(shè)計是基于 CSP 設(shè)計
通信順序過程(CSP)是一種描述交互模式的語言。CSP 的美在于他簡單,只要遵循下面 3 個原則就可以實現(xiàn) CSP。erlang,ocaml 等于都是基于 CSP 設(shè)計并發(fā)模型。
- Tony Hoare 1978 源于 1978 年
- 在每個進程中都是順序執(zhí)行代碼的
- 進程中通訊不是基于共享數(shù)據(jù),而是通過傳遞數(shù)據(jù)開進行通訊的,沒有共享狀態(tài)
- 只要添加相同結(jié)構(gòu)就可以進行擴展,便于擴展。

golang_channel.jpg