美文网首页
golang 并发原语[草稿]

golang 并发原语[草稿]

作者: 咔叽咔叽_ | 来源:发表于2019-05-27 17:29 被阅读0次

总结一下昨天 鸟窝 在《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

相关文章

  • golang 并发原语[草稿]

    总结一下昨天 鸟窝 在《Go 同步和并发设计模式》 分享的 golang 并发开发相关的知识。主要分为四个部分,同...

  • Golang学习笔记-Golang中的锁

    同步原语和锁 Golang作为一个原生支持用户态的语言,当提到并发进程,多线程的时候,是离不开锁的,锁是一种并发编...

  • io

    Golang中输入和输出操作使用原语实现,这些原语将数据模拟称为可读或可写的字节流。为此,Golang的io包提供...

  • 并发专题目录贴

    并发一、并发一:JAVA并发模型 并发二、原子性、有序性、可见性 并发三、同步原语final、volatile的内...

  • channel使用场景:futures / promises

    golang 虽然没有直接提供 futrue / promise 模型的操作原语,但通过 goroutine 和 ...

  • 多线程与高并发(二)-- java.util .concurre

    一、cas自旋原理 1、概念 CAS的全称是Compare-And-Swap,它是CPU并发原语,原语的执行必须是...

  • CAS操作

    CAS操作 CAS是compareAndSwap的缩写,它是一条CPU并发原语。由于CAS是一种系统原语,属于系统...

  • Golang的并发编程

    golang是为并发而生的语言。优雅的并发编程范式,完善的并发支持,出色的并发性能是golang区别于其他语言的一...

  • Go控制程序生命周期

    近期学了go语言的并发编程,掌握了 并发原语-原子锁,互斥锁,通道 并发原理 并发设计模式今天我们就来锻炼一下,如...

  • Go append并发问题

    Golang append并发问题

网友评论

      本文标题:golang 并发原语[草稿]

      本文链接:https://www.haomeiwen.com/subject/xlfhtctx.html