go的互斥锁Mutex以及条件变量Condition

go中的锁分为两类:

  • 互斥锁Sync.Mutex:特别的如果要实现对象锁的话,可以在定义该对象的结构体时封装一个互斥锁成员,比如
type struct Resource{
     resource int 
     lock sync.mutex
}
  • 读写锁 sync.RWMutex:读-写、写-读 以及写-写操作互斥,但读-读操作可以并发执行,操作如下:
func (*RWMutex) Lock()				// 写锁
func (*RWMutex) Unlock()			// 解写锁
func (*RWMutex) RLock()          //读锁
func (*RWMutex) RUnlock()     //解读锁

条件变量Condition

sync.Cond类型即是Go中的条件变量,该类型内部包含一个锁接口。条件变量通常与锁配合使用

创建条件变量的方式(调用sync包下的func NewCond(l locker) *Cond {} 比如:

var cond = sync.NewCond(&sync.Mutex{}) // 条件变量必须传入一个锁(condition是基于互斥锁的,所以必须配套使用,go直接帮它们两合二为一了)

*sync.Cond类型(这是个指针类型)有三个方法:

Wait(): //该方法会阻塞当前协程同时释放所
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值