联系我们
《深入go并发编程》培训

微信扫码立即联系主办方

微信分享
《深入go并发编程》培训

使用微信扫一扫分享到朋友圈

活动分享
《深入go并发编程》培训

使用微信扫一扫进入小程序分享活动

活动详情

关于晁岳攀

18年的软件研发经验,软件开发的老兵,Scala集合技术手册(简/繁版)的作者,Go微服务框架 rpcx 的作者。 高性能的服务治理rpcx (Go)框架的开发者,先前在同方、Motorola、comcast从事软件开发工作,现在在微博平台研发部做基础平台的研发工作。既有跨国公司的软件开发经历,也有互联网公司的研发经验,主要专注于后台中间件产品和基础架构设计、微服务、区块链等方向。 经常在网上和个人网站(http://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分钟)





活动门票
活动筹备中
售票推广中
活动结束
选择票
门票名称
单价(¥)
截止时间
数量
现场票(不含餐)
99
2019-05-26 18:00
已售罄
不支持退票

退款说明:不支持退票

优惠或邀请码
票价
0
活动主办方
时间与地址
时间:  2019-05-26 09:00 ~ 18:00
地址:   北京海淀区中关村软件园一期尚东数字山谷B区2号楼(黎明大厦)