社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
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 语言技术文章想要分享,热点的行业资讯需要报道等,欢迎联系在菜单栏回复“投稿”“合作”联系我们的小编进行投稿。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!