分享
golang 并发原语[草稿]
咔叽咔叽_ · · 2545 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
总结一下昨天 鸟窝 在《Go 同步和并发设计模式》 分享的 golang 并发开发相关的知识。主要分为四个部分,同步原语,分布式同步原语,channel,内存模型。这里主要从初学者角度,以鸟窝的ppt为大纲,来梳理一下常用的功能,用法和代码实现。
前沿背景
这里贴出一篇关于golang流行开源项目涉及到并发bug的论文
image.png
上图可以看到,golang主流的开源项目用到的并发原语的比例。主要集中在Mutex和channel,所以这应该是我们学习的重点部分。
同步原语
Mutex
结构定义
// A Mutex must not be copied after first use.
type Mutex struct {
state int32
sema uint32
}
注释可以看到Mutex是不能复制的。
RWMutex
Cond
WaitGroup
Once
Pool
sync.Map
context.Context
ReentrantLock
Semaphore
SingleFlight
ErrGroup
SpinLock
atomic 包
分布式同步原语
Channel
内存模型 happens before
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信2545 次点击
下一篇:在Golang中获取DNS记录
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
总结一下昨天 鸟窝 在《Go 同步和并发设计模式》 分享的 golang 并发开发相关的知识。主要分为四个部分,同步原语,分布式同步原语,channel,内存模型。这里主要从初学者角度,以鸟窝的ppt为大纲,来梳理一下常用的功能,用法和代码实现。
前沿背景
这里贴出一篇关于golang流行开源项目涉及到并发bug的论文
image.png
上图可以看到,golang主流的开源项目用到的并发原语的比例。主要集中在Mutex和channel,所以这应该是我们学习的重点部分。
同步原语
Mutex
结构定义
// A Mutex must not be copied after first use.
type Mutex struct {
state int32
sema uint32
}
注释可以看到Mutex是不能复制的。