最近又重新翻了一遍 Go 的在线文档和相关文章,发现对 Go 的并发机制理解还不是很深,故在 Github 上建了一个 repo,记录一下几种典型的 go concurrency patterns。
Go 从语言级支持 closure,而一个 closure 是一个“函数”,它允许访问函数外部的变量(此时称该函数被“绑定”到了这个变量上) —— 这一点对于实现并发很重要,下面很多所谓的并发模式都是基于这种 closure 机制的。下面举一个最简单的 fibonacci 数列的实现:
几种典型的 Go 并发模式
- Generator
- Timeout
- Ticker
- Pipelines and cancellation
- TBD …
详见 repo 代码吧。