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 语言技术文章想要分享,热点的行业资讯需要报道等,欢迎联系在菜单栏回复“投稿”“合作”联系我们的小编进行投稿。

《Go 同步和并发设计模式》培训结束,get满满干货!相关推荐

  1. 《Go 同步和并发设计模式》培训会后整理

    今天参加<Go 同步和并发设计模式>主题培训,虽然早上下雨,但是大家一般还是都在9点左右赶到现场.本次分享时间很充沛,晁老师讲的也很细致,4点就结束了高于预期啊呵呵,全程听下讲座来收获还是 ...

  2. [深度]Go同步和并发设计模式

    在 2019年第五届 Gopher China 大会上,新浪微博平台研发中心架构组的工程师晁岳攀进行了主题为<Go同步和并发设计模式>的演讲,内容分为5个主题: 基本的同步原语 拓展同步原 ...

  3. java设计模式并发_[高并发Java 七] 并发设计模式

    [高并发Java 七] 并发设计模式 [高并发Java 七] 并发设计模式 为什么80%的码农都做不了架构师?>>> 在软件工程中,设计模式(design pattern)是对软件设 ...

  4. 多线程同步与并发访问共享资源工具—Lock、Monitor、Mutex、Semaphore

    "线程同步"的含义 当一个进程启动了多个线程时,如果需要控制这些线程的推进顺序(比如A线程必须等待B和C线程执行完毕之后才能继续执行),则称这些线程需要进行"线程同步(t ...

  5. 并发设计模式——保护性暂停(Guarded Suspension)

    并发设计模式--保护性暂停(Guarded Suspension) 什么叫做 Guarded Suspension ? guarded 的意思是"守护.担保",suspension ...

  6. 《Java高并发核心编程.卷2,多线程、锁、JMM、JUC、高并发设计模式》

    <Java高并发核心编程.卷2,多线程.锁.JMM.JUC.高并发设计模式> 目录 第1章 多线程原理与实战 1.2 无处不在的进程和线程 1.2.1 进程的基本原理 1.2.2 线程的基 ...

  7. 解秘 Node.js 单线程实现高并发请求原理,以及串联同步执行并发请求的方案

    最近在做一个支持多进程请求的 Node 服务,要支持多并发请求,而且请求要按先后顺序串联同步执行返回结果. 对,这需求就是这么奇琶,业务场景也是那么奇琶. 需求是完成了,为了对 Node.js 高并发 ...

  8. 并发设计模式之Guarded Suspension模式

    - 原文链接: http://www.joyhwong.com/2016/11/19/并发设计模式之guarded-suspension模式/ Guarded Suspension意为保护暂停,其核心 ...

  9. 并发设计模式之生产者-消费者模式

    点击查看原文: http://www.joyhwong.com/2016/11/19/并发设计模式之生产者-消费者模式/ 生产者-消费者模式是一个经典的多线程设计模式,它为多线程间的协作提供了良好的解 ...

最新文章

  1. Belkatalog CMS SQL 注入漏洞(图)
  2. 入职一个多月了,谈谈感想
  3. mysql树形遍历_mysql树形结构遍历
  4. Hbase之protobuf的使用
  5. 酒店房间和 C++ 局部变量的作用域
  6. 大数据 数据库 评测_为什么腾讯QQ的大数据平台选择了这款数据库?
  7. STM32F107VCTx I2C通信
  8. DELL H330(LSI 3008)RAID卡刷IT直通模式注意事项(避坑指南)
  9. 计算机通信的应用,计算机技术在通信中的应用
  10. Java中的角度问题,求三角函数,角度,弧度,一文足够
  11. 无锁环形缓存器RingBuffer的原理
  12. Python可视化——随机漫步
  13. 运维简历怎么写项目描述_职场小白怎么写简历?一份好简历=成功一半
  14. command a expects \ followed by text
  15. iKinds:我是如何一步步重构改造项目从单VC到多VC界面(上)
  16. 员工与客户之间就是一个微信
  17. oracle开放查询表权限_(转载)Oracle创建用户并给用户授权查询指定表或视图的权限...
  18. 前端三剑客入门学习笔记之HTML
  19. ac1900修改代理服务器,AC1900路由器怎么设置? | 192路由网
  20. iOS-自己定义键盘选择器

热门文章

  1. 咸鱼菌玩3D—123D 菜单
  2. JS判断输入的是否汉字
  3. WSL Ubuntu guile命令报错Wrong __data_start/_end pair及guile-gi等相关编译错误的解决方法
  4. 明基逐鹿荣获2016年中国软件行业最具影响力企业奖
  5. 戴尔服务器修改光驱盘符,戴尔笔记本电脑驱动光盘和安装说明.doc
  6. 数据分析实战(数据采集与整理)
  7. 博士申请 | 香港科技大学(广州)梁宇轩老师招收全奖博士/硕士/博后/RA/实习生...
  8. 【正则表达式并且关系】
  9. avast! Home/Pro 4.7.1098简体中文
  10. win10使用自带的Hyper-V安装win7虚拟机