Go是门很棒的语言。当它首次被宣告给这个世界时,所包含的特性令人疯狂:语法简洁,编译速度非常快,执行效率高,支持鸭子类型,用它的并发原语处理问题非常直观。在第一次使用go关键字建立goroutine时(这就是本书将要介绍的东西),我太高兴了,与其他多种语言相比,我从未有过如此爽快的感觉。
多年来,我把Go代码一点一点加入个人项目中,直到有一天,猛然发觉已经积累了上万行之多。随着社区的不断发展,在Go中使用并发的最佳实践话题越来越多。 有些开发者就他们的使用经验进行了讨论。 但在社区中关于如何较好的进行并发操作,并没有一本完善的综合指南。
正是基于这一点,我决定写这本书。以希望大家能够了解并掌握有关Go中并发性的高质量、全面的信息:如何使用它,如何将最佳实践和模式整合到系统中,以及它们如何在所有系统中运行。 我尽力在这些考量之间取得平衡。
衷心希望这本书能给你带来帮助!
* * * * *
学识浅薄,错误在所难免。我是长风,欢迎来Golang中国的群(211938256)就本书提出修改意见。
- 前序
- 谁适合读这本书
- 章节导读
- 在线资源
- 第一章 并发编程介绍
- 摩尔定律,可伸缩网络和我们所处的困境
- 为什么并发编程如此困难
- 数据竞争
- 原子性
- 内存访问同步
- 死锁,活锁和锁的饥饿问题
- 死锁
- 活锁
- 饥饿
- 并发安全性
- 优雅的面对复杂性
- 第二章 代码建模:序列化交互处理
- 并发与并行
- 什么是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运行时
- 任务调度