《Go 同步和并发设计模式》培训会后整理
今天参加《Go 同步和并发设计模式》主题培训,虽然早上下雨,但是大家一般还是都在9点左右赶到现场。本次分享时间很充沛,晁老师讲的也很细致,4点就结束了高于预期啊呵呵,全程听下讲座来收获还是很多的,下面整理一下今天感觉重点的内容。
golang中使用channel的使用率占30%,但错误率缺高于50%
错误原因大多是使用channel不适当造成的。
读写锁RWMutex、Mutex不支持方法重入,想要实现重入可以使用黑科技gogid 或者用 token
使用Cond方法进行同步操作容易出错,推荐使用简单易用的sync.WaitGroup
推荐使用go build race 进行锁竞争性检测,go vet 静态代码检测是否存锁值拷贝(因为拷贝锁值也会拷贝锁的状态信息,所以锁尽量使用指针来创建)。
sync.Pool 单个回收的 bytes.Buffer 对象不应该超过64k,因为bytes.Buffer可能会增长,如果放的比较多的话,可能会导致内存占用比较多,内存不容易被释放。许多官方类库都加上了此判断。
fmt包json包
sync.Pool 不适合构建链接池,因为他会被系统回收掉。推荐一个构建 Socket 链接池的类库:github.com/fatih/pool
写少读多的场景下推荐使用 sync.Map,读的时候会优先读取 readOnly.m 有脏数据时才会读取 Map.dirty 数据。提高查询效率
拓展同步原语
Semaphore 使用信号量方式实现锁
SingleFlight 同时一堆协程请求一个资源时只允许一个协程操作,防止雪崩。
ErrGroup Wait会等待所有协程执行完后才释放
SpinLock 自旋锁,有些场景效率高,但是非公平
FileLock 跨进程的Mutex
concurrent-map 按照槽的方式存放Map数据,减少锁的竞争etcd 跟 zookeeper/consul/redis相比一个优点在于,它支持同步原语,如:Mutex、RWMutex
而且还有最重要的选主算法
大赞 ,Channe各种场景下执行 receive/send/closed 的状态整理。
Channel的高阶玩法
Fan In 所有子Channel汇入到一个Channel中
Fan Out 一个Channel分散成多个子Channel
Pipeline 比如:消费者与生产者场景
Stream Skip、Take 通过函数来控制某个数据是否写入下游Stream。
《Go 同步和并发设计模式》培训会后整理相关推荐
- 《Go 同步和并发设计模式》培训结束,get满满干货!
5月26日,在北京举办了GoCN和滴滴再次携手邀请了来自微博研发平台架构中心资深架构师-晁岳攀老师在北京举办的<深入Go 并发编程>培训专场,本次参加培训报名人数达到170余人,远超我们一 ...
- [深度]Go同步和并发设计模式
在 2019年第五届 Gopher China 大会上,新浪微博平台研发中心架构组的工程师晁岳攀进行了主题为<Go同步和并发设计模式>的演讲,内容分为5个主题: 基本的同步原语 拓展同步原 ...
- java设计模式并发_[高并发Java 七] 并发设计模式
[高并发Java 七] 并发设计模式 [高并发Java 七] 并发设计模式 为什么80%的码农都做不了架构师?>>> 在软件工程中,设计模式(design pattern)是对软件设 ...
- 《Java高并发核心编程.卷2,多线程、锁、JMM、JUC、高并发设计模式》
<Java高并发核心编程.卷2,多线程.锁.JMM.JUC.高并发设计模式> 目录 第1章 多线程原理与实战 1.2 无处不在的进程和线程 1.2.1 进程的基本原理 1.2.2 线程的基 ...
- 解秘 Node.js 单线程实现高并发请求原理,以及串联同步执行并发请求的方案
最近在做一个支持多进程请求的 Node 服务,要支持多并发请求,而且请求要按先后顺序串联同步执行返回结果. 对,这需求就是这么奇琶,业务场景也是那么奇琶. 需求是完成了,为了对 Node.js 高并发 ...
- 并发设计模式之Guarded Suspension模式
- 原文链接: http://www.joyhwong.com/2016/11/19/并发设计模式之guarded-suspension模式/ Guarded Suspension意为保护暂停,其核心 ...
- 并发设计模式之生产者-消费者模式
点击查看原文: http://www.joyhwong.com/2016/11/19/并发设计模式之生产者-消费者模式/ 生产者-消费者模式是一个经典的多线程设计模式,它为多线程间的协作提供了良好的解 ...
- Java 高并发第二阶段实战---高并发设计模式,内存模型,CPU一致性协议,volatile关键字剖析
第二阶段的课程主要围绕着Volatile关键字,内存重排序,Happen-Before,Cpu一致性协议,高并发下的设计模式以及类加载器几个大的方面展开,下面是内容详细信息,本教程是本人录制,下载地址 ...
- 多线程同步与并发访问共享资源工具—Lock、Monitor、Mutex、Semaphore
"线程同步"的含义 当一个进程启动了多个线程时,如果需要控制这些线程的推进顺序(比如A线程必须等待B和C线程执行完毕之后才能继续执行),则称这些线程需要进行"线程同步(t ...
最新文章
- 还只看花书,西瓜书?一文告诉你如何正确学习深度学习,从理论到实战。
- Hibernate总结
- 云原生时代下,容器安全的“四个挑战”和“两个关键”
- jetbrains是最好的编译器系列
- 把运行在 Docker 容器内的 Microsoft SQL 服务器部署到 SAP Kyma 中
- hystrix 源码 线程池隔离_Hystrix源码学习--线程池隔离
- javascript 西瓜一期 13 十六进制的数数方式与进位
- 蓝桥杯 ALGO-22算法训练 数的划分
- 数据科学导论学习小结——其二
- python用turtle画一个苹果
- 利用scrapy工具,实现一键获取多个项目数据的功能
- C# 将word/ppt文档转换为Pdf的三种方法
- Python学习之路-爬虫(四大名著)
- 怎样给手机发送短信验证码
- 数据结构与算法—二叉排序(查找)树
- 瞬时测频接收机matlab_瞬时测频接收机
- 程序员必备的几个图标网站
- 在暑期实习时需要注意些什么
- mysql5.7应该导什么包_微信表情包制作amp;上线全过程(详细血泪史)
- MFC Ribbon界面开发
热门文章
- url scheme
- npoi ppt html,NPOI(示例代码)
- 台式计算机idc数据排名,IDC:2018年全球个人计算设备出货量约为4.07亿台 下滑大约3.9%...
- 手机寿命不到三年,为什么现在的手机越来越短命?
- 解决三星note5无线充电偶尔充不进去的问题
- linux系统把驱动编译成.ko模块 insmod动态加载
- 三星手机语音测试软件,三星 Galaxy Buds Pro获软件更新 提升语音检测功能的切换速度...
- leetcode 题解 54.螺旋矩阵(Typescript)
- 小程序多行文本折叠展开
- cool-admin框架后端使用-node版本,使用事务装饰器来创建和事务回滚