美文网首页
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 并发原语[草稿]

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