并发是一种设计
- 将您的程序设计为独立进程的集合
- 将这些进程设计为并行运行
- 通过设计让您的代码无论是同步还是异步结果并没有差异
关注并发的细节
- 通过独立的任务来组织您的代码
- 确保没有 race conditions(竞争条件)
- 确保没有 deadlocks (锁死)
- 更多工作并发进行
Communicaing Sequential Process(CSP)
go 语言的并发模型设计是基于 CSP 设计
通信顺序过程(CSP)是一种描述交互模式的语言。CSP 的美在于他简单,只要遵循下面 3 个原则就可以实现 CSP。erlang,ocaml 等于都是基于 CSP 设计并发模型。
- Tony Hoare 1978 源于 1978 年
- 在每个进程中都是顺序执行代码的
- 进程中通讯不是基于共享数据,而是通过传递数据开进行通讯的,没有共享状态
- 只要添加相同结构就可以进行扩展,便于扩展。