《Go语言并发之道》是一本非常优秀的书籍,它带领读者逐步深入了解Go语言中的并发方法,通过阅读本书,你将会理解为何Go语言选择了这些并发模型,同时也会了解这些模型可能会带来的问题,更重要的是,本书教会了我们如何有效地组合利用这些模型中的原语来解决问题,不仅如此,本书还强调了一些让我们在独立编程过程中更加自信的主题,让我们能够更好地学习和应用这些并发技巧,无论是对于初学者还是有经验的开发者来说,本书都是一本不可或缺的指南。
内容介绍
本书作者带你一步一步深入这些方法。你将理解 Go语言为何选定这些并发模型,这些模型又会带来什么问题,以及你如何组合利用这些模型中的原语去解决问题。学习那些让你在独立且自信的编写与实现任何规模并发系统时所需要用到的技巧和工具。理解Go语言如何解决并发难以编写正确这一根本问题。学习并发与并行的关键性区别。深入到Go语言的内存同步原语。利用这些模式中的原语编写可维护的并发代码。将模式组合成为一系列的实践,使你能够编写大规模的分布式系统。学习 goroutine 背后的复杂性,以及Go语言的运行时如何将所有东西连接在一起。
目录
- 前言 1
- 第1章 并发概述 9
- 摩尔定律,Web Scale和我们所陷入的混乱 10
- 为什么并发很难? 12
- 竞争条件 13
- 原子性 15
- 内存访问同步 17
- 死锁、活锁和饥饿 20
- 确定并发安全 28
- 面对复杂性的简单性 31
- 第2章 对你的代码建模:通信顺序进程 33
- 并发与并行的区别 33
- 什么是CSP 37
- 如何帮助你 40
- Go语言的并发哲学 43
- 第3章 Go语言并发组件 47
- goroutine 47
- sync包 58
- WaitGroup 58
- 互斥锁和读写锁 60
- cond 64
- once 69
- 池 71
- channel 76
- select 语句 92
- GOMAXPROCS控制 97
- 小结 98
- 第4章 Go语言的并发模式 99
- 约束 99
- for-select循环103
- 防止goroutine泄漏 104
- or-channel 109
- 错误处理112
- pipeline 116
- 构建pipeline的最佳实践 120
- 一些便利的生成器 126
- 扇入,扇出 132
- or-done-channel 137
- tee-channel 139
- 桥接channel模式 140
- 队列排队143
- context包 151
- 小结 168
- 第5章 大规模并发 169
- 异常传递169
- 超时和取消 178
- 心跳 184
- 复制请求197
- 速率限制199
- 治愈异常的goroutine 215
- 小结 222
- 第6章 goroutine和Go语言运行时 223
- 工作窃取223
- 窃取任务还是续体 231
- 向开发人员展示所有这些信息 240
- 尾声 240
- 附录A 241