golang中的Mutex设计原理详解(一)

Mutex系列是根据我对晁岳攀老师的《Go 并发编程实战课》的吸收和理解整理而成,如有偏差,欢迎指正~

目标

本系列除了希望彻底学习和了解 golang 中 sync.Mutex 的原理和使用,更希望借 golang 中 Mutex 的发展和演变,了解并发场景下锁的设计与实现方法以及不通业务场景下的一些特殊考虑。

Mutex 简介

Mutex 是什么

Mutex 是 golang 标准库的互斥锁,主要用来处理并发场景下共享资源的访问冲突问题。

Mutex 定义

尽管 Mutex 的实现经历了多次的重大改版,但是因为设计的巧妙,使用上并没有发生任何变化。

package sync // import "sync"

type Mutex struct {
   
    state int32
    sema  uint32
}
    A Mutex is a mutual exclusion lock. The zero value for a Mutex is an
    unlocked mutex.

    A Mutex must not be copied after first use.

func (m *Mutex) Lock()
func (m *Mutex) Unlock()

从 Mutex 的定义一眼就能看出来如何使用,加锁使用 Lock 函数,解锁使用 Unlock 函数。

其实 package sync 中定义了 Locker 接口:

package sync // import "sync"

type Locker interface {
   
        Lock
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值