《Go 同步和并发设计模式》培训结束,get满满干货!
5月26日,在北京举办了GoCN和滴滴再次携手邀请了来自微博研发平台架构中心资深架构师-晁岳攀老师在北京举办的《深入Go 并发编程》培训专场,本次参加培训报名人数达到170余人,远超我们一开始限定的数量150人,更是有同学在培训当天联系到我们开启了报名通道。
据现场反馈,各位gopher们激情高涨,有些同学一开始是奔着晁老师超过120页的PPT去的,但一整天完整听下来,受益匪浅。此次授课的晁岳攀老师在课堂上手把手的教大家Go 同步和并发设计模式,也取得了良好的成效,受到学员们的一致好评。
本次培训课程回顾
并发原语综述
基本并发原语
Mutex的实现、扩展功能和坑。
RWMutex的实现、扩展功能和坑。
Waitgroup的实现、坑
Cond的使用和坑
Once的实现和坑,单例的Eager/Lazy实现
Pool的坑, net.Conn的池
Map的实现、应用场景
-
Context的一些问题
扩展并发原语
可重入锁
信号量
SingleFlight及应用
ErrGroup
自旋锁
文件锁
-
并发Map的多种实现
原子操作
原子操作的实现
操作的数据类型
提供的函数
通用Value类型
-
扩展的原子操作库
分布式并发原语
锁,Mutex, RWmutex实战
栅栏
leader选举
队列
STM
-
其它分布式并发库
channel
常见易犯错的channel使用场景
三大使用场景
Or-done模式的三种实现
扇入
扇出
Tee
Pipeline
-
流式处理
happenbefore
init函数
goroutine
channel
Mutex/RWMutex
Waitgroup
Once
atomic
习题研讨
Go提供了我们便利的进行并发编程的工具、方法和同步原语,同时也提供给我们诸多的犯错的机会,也就是俗称的“坑”。即使是*Go开发的项目,比如Docker、Kubernetes、gRPC、etcd, 都是有经验丰富的Go开发专家锁开发,也踩过不少的并发的坑,而且依然源源不断的继续踩着,即便是标准库也是这样。
分析和总结并发编程中的陷阱,避免重复踩在别人的坑中,正是本次培训课的重要内容。只有深入了解并发原语的实现,全面了解它们的特性和限制场景,注意它们的局限和容易踩的坑,才能提高我们的并发编程的能力。通过了解和学习其他人的经验和贡献的项目和库,我们可以更好的扩展我们的视野,避免重复的造*,或者说我们可以制作更好的*。
语言的内存模型定义了对变量的读写的可见性,可以清晰而准确读写事件的happen before关系。对于我们,可以很好地分析和编排goroutine的运行,避免数据的竞争和不一致的问题。
参家培训的伙伴都获得了哪些收获呢?
基本同步原语的具体实现、hack同步原语进行扩展,它们的使用场景和坑,以及别人是怎么踩的等的了解
一些扩展的同步源于,对于标准库sync包的补充的了解
对于规模很大的项目,分布式同步原语是必不可少的,便利的分布式同步原语的了解
atomic可以保证对数据操作的一致性,利用CAS可以设计lock-free的数据结构
channel是Go语言进行并发编程的很好的工具,它的使用姿势了解
-
Go语言的内存模型的学习
本次培训PPT获取方式:关注“Go中国”公众号,在公众号对话栏回复“Go培训”即可获取!
GO 中国征稿啦!
自“Go中国 ” 公众号上线以来,因为扎实的干货(害羞)、前沿的解读(娇羞)、满满的福利一直深受 Gopher 们的喜爱,为了给大家带来更具实力的干货以及 Go 语项目开发经验,我们将开始对外征稿!
现在我们开始对外征稿啦!如果你有优秀的 Go 语言技术文章想要分享,热点的行业资讯需要报道等,欢迎联系在菜单栏回复“投稿”“合作”联系我们的小编进行投稿。