知识卡片
CSP用通道通信
内容
CSP 把并发实体之间的协作建模为通过 channel 通信。Go 借用了 goroutine 和 channel 两个核心概念,所以它的并发风格更鼓励传递数据,而不是到处共享可变状态。这正是 [[通道同步交换]] 里通道概念的延伸,Go 具体靠 [[Goroutine轻量执行]] 承载这套通信。
参考来源
- 位置:《Go语言高级开发与实战》第4章《Go语言并发编程》(源文件:_epub-src/GoYu Yan Gao Ji Kai Fa Yu Shi Zhan_split_035.html)
- 结论依据:原文定义 CSP 是独立并发实体通过共享通道通信的模型,并说明 Go 借用协程和通道概念,因此支撑该结论。
- 原始内容:到达的顺序。 4.2.3 通信顺序进程 通信顺序进程(Communicating Sequential Processes,CSP)最早出现于东尼·霍尔在1978年发表的论文中,用于描述两个独立的并发实体通过共享通道(channel)进行通信的并发模型。Go语言就是借用CSP并发模型的一些概念为之实现并发的,但是Go语言并没有完全实现CSP并发模型的所有理论,仅仅是实现了“协程”和“通道”这两个概念。