在我阅读技术书籍时,通常会跳到那些能够激起我兴趣的部分,或者,如果我试图提高新技术的效率,我会疯狂地剔除与当前工作直接相关的部分 。 无论你的使用初衷是什么,这里是本书的路线图,希望它能帮助你,引导你到需要的地方。
### 第一章 并发编程介绍
本章介绍了并发的历史,阐述并发是一个重要的概念,并讨论了一些使并发难以正确的基本问题。 同时简要介绍了Go如何缓解这些负担。
如果你有相关的知识,或者只是想了解如何使用Go的并发原语技术,可以跳过本章。
### 第二章 代码建模:序列化交互处理
本章介绍了Go的设计的一些初衷。 这将有助于为你提供与Go社区中其他人交谈的背景信息,并帮助你了解为什么代码会按照的这样那样的思考方式运行。
### 第三章 Go的并发构建模块
这一章我们将开始深入研究Go并发原语的语法。 还会介绍标准库中的sync包,它负责处理Go的内存访问同步。 如果你之前没有在Go中使用过并发,但希望立即了解正式内容,那么这里就是开始的地方。
在Go中编写并发代码的所需基础知识很少,在这里主要是将Go的概念与其他语言和并发模型进行比较。 严格地说,没有必要理解这些东西,但这些概念可以帮助你全面了解Go语言的并发特性。
### 第四章 Go的并发编程范式
在本章中,我们将着眼于如何把Go的并发原语组合在一起来形成有用的模式。 这些模式既可以帮助我们解决问题,也可以避免在使用中常见的错误。
如果你已经使用Go编写了一些并发代码,本章仍然是有用的。
### 第五章 大规模并发
在本章中,我们将学习过的模式组合成更大的程序,展示服务和分布式系统中常用的经验。
### 第六章 Goroutines和Go运行时
本章介绍Go运行时如何处理调度goroutines。 这对于那些想了解Go的运行时内部机制的人来说会很有意思。
### 附录
附录列举了各种工具和命令,可以帮助你更轻松地编写和调试并发程序。
***所有示例皆运行于main函数下,译者程序基于go 1.10.1运行于windows7系统下,且全部验证无误***
- 前序
- 谁适合读这本书
- 章节导读
- 在线资源
- 第一章 并发编程介绍
- 摩尔定律,可伸缩网络和我们所处的困境
- 为什么并发编程如此困难
- 数据竞争
- 原子性
- 内存访问同步
- 死锁,活锁和锁的饥饿问题
- 死锁
- 活锁
- 饥饿
- 并发安全性
- 优雅的面对复杂性
- 第二章 代码建模:序列化交互处理
- 并发与并行
- 什么是CSP
- CSP在Go中的衍生物
- Go的并发哲学
- 第三章 Go的并发构建模块
- Goroutines
- sync包
- WaitGroup
- Mutex和RWMutex
- Cond
- Once
- Pool
- Channels
- select语句
- GOMAXPROCS
- 结论
- 第四章 Go的并发编程范式
- 访问范围约束
- fo-select循环
- 防止Goroutine泄漏
- or-channel
- 错误处理
- 管道
- 构建管道的最佳实践
- 便利的生成器
- 扇入扇出
- or-done-channel
- tee-channel
- bridge-channel
- 队列
- context包
- 小结
- 第五章 可伸缩并发设计
- 错误传递
- 超时和取消
- 心跳
- 请求并发复制处理
- 速率限制
- Goroutines异常行为修复
- 本章小结
- 第六章 Goroutines和Go运行时
- 任务调度