4月28日,第五届 GopherChina 大会在北京圆满落幕了。会后,参会的 gopher第一时间在知乎以及朋友圈分享了对 GopherChina 2019大会的讲师、话题以及干货内容进行了评价。小编在整理参会 gopher 们对大会的评价时,发现很多 gopher 都提到来自微博研发平台架构中心资深架构师-晁岳攀老师分享的《Go 同步和并发设计模式》超级干货,从源码级别探究 Go 在并发层面的基础库实现,内容非常全面和丰富,有细节有深度。
据悉,在今年的 GopherChina 大会上,晁岳攀老师的分享刚刚结束,大会现场群里就已经开始沸腾起来了,大家纷纷跪求晁老师主题分享的120页完整版PPT。
大家想 get 到晁老师更多的技术实践干货,仅凭一个PPT怎么行呢?北京的小伙伴们有福了!Go中国社区再次携手滴滴邀请晁岳攀老师于5月26日在北京举办《深入Go 并发编程》培训专场,跟着晁岳攀老师一起强学博识,get 到更多的Go 并发编程实践干货。
关于晁岳攀
18 年的软件研发经验,软件开发的老兵,Scala 集合技术手册(简/繁版)的作者,Go 微服务框架 rpcx 的作者。 高性能的服务治理 rpcx (Go) 框架的开发者,先前在同方、Motorola、comcast从事软件开发工作,现在在微博平台研发部做基础平台的研发工作。既有跨国公司的软件开发经历,也有互联网公司的研发经验,主要专注于后台中间件产品和基础架构设计、微服务、区块链等方向。 经常在网上和个人网站(colobu.com)发表一些技术文章。
深入Go并发编程研讨课
Go 提供了我们便利的进行并发编程的工具、方法和同步原语,同时也提供给我们诸多的犯错的机会,也就是俗称的“坑”。即使是顶级 Go 开发的项目,比如 Docker、Kubernetes、gRPC、etcd, 都是有经验丰富的 Go 开发专家锁开发,也踩过不少的并发的坑,而且依然源源不断的继续踩着,即便是标准库也是这样。
有时候,幸福是建立在别人的痛苦之上。分析和总结并发编程中的陷阱,避免重复踩在别人的坑中,正是本次培训课的重要内容。只有深入了解并发原语的实现,全面了解它们的特性和限制场景,注意它们的局限和容易踩的坑,才能提高我们的并发编程的能力。通过了解和学习其他人的经验和贡献的项目和库,我们可以更好的扩展我们的视野,避免重复的造轮子,或者说我们可以制作更好的轮子。
语言的内存模型定义了对变量的读写的可见性,可以清晰而准确读写事件的 happen before 关系。对于我们,可以很好地分析和编排 goroutine 的运行,避免数据的竞争和不一致的问题。
通过本次课程,你可以收获
了解基本同步原语的具体实现、hack同步原语进行扩展,了解它们的使用场景和坑,已经别人是怎么踩的
了解一些扩展的同步源于,对于标准库sync包的补充
对于规模很大的项目,分布式同步原语是必不可少的,带你了解便利的分布式同步原语
atomic 可以保证对数据操作的一致性,利用 CAS 可以设计 lock-free 的数据结构
channel 是 Go 语言进行并发编程的很好的工具,带你了解它的使用姿势
了解 Go 语言的内存模型
本次课程大纲及时间安排
并发原语综述 (10分钟)
基本并发原语 (2小时)
Mutex 的实现、扩展功能和坑。
RWMutex 的实现、扩展功能和坑。
Waitgroup 的实现、坑
Cond 的使用和坑
Once 的实现和坑,单例的 Eager/Lazy 实现
Pool 的坑, net.Conn 的池
Map 的实现、应用场景
Context 的一些问题
扩展并发原语 (1小时)
可重入锁
信号量
SingleFlight 及应用
ErrGroup
自旋锁
文件锁
并发 Map 的多种实现
原子操作 (半小时)
原子操作的实现
操作的数据类型
提供的函数
通用 Value 类型
扩展的原子操作库
分布式并发原语 (1小时)
锁,Mutex, RWmutex 实战
栅栏
leader 选举
队列
STM
其它分布式并发库
channel (1小时)
常见易犯错的 channel 使用场景
三大使用场景
Or-done 模式的三种实现
扇入
扇出
Tee
Pipeline
流式处理
happenbefore (1小时)
init函数
goroutine
channel
Mutex/RWMutex
Waitgroup
Once
atomic
习题研讨 (20分钟)
培训时间及地点
时间:2019年5月26日 9:00-18:00
地址:北京市海淀区中关村软件园一期尚东数字山谷B区2号楼(黎明大厦)
报名方式:点击“阅读原文”即可报名,本次培训限量门票仅剩20余张了,北京的伙伴们抓紧时间啦~~
有疑问加站长微信联系(非本文作者)