GoLang中的SYNC包-Locker接口的含义

sync作为Golang中的标准库,承担了golang中的基础锁的实现,包中的sync.Mutex和sync.RWMutex都实现了Locker接口。

抽象接口--Locker

Locker作为sync中的抽象接口,其主要意义就在于统一go项目中的锁,不同包中的锁针对实际场景实现利用不同的数据结构实现相同的接口,利用官方的Locker接口将锁在包项目中进行传递,所以官方贴心的只做了两个方法:

  • Lock()
  • Unlock ()

这也符合go所声明的薄耦合的思想,同时实现官方的Locker接口也利于项目整体风格的统一,例如在项目初期可以使用官方提供的简单互斥锁:

var locker *sync.Mutex
func main(){
    lock(lcoker)
}
func lock(lock sync.Locker){
}

后期可以更换成:

var locker *CreateLock
func main(){
    lock(locker)
}
func lock(lock sync.Locker){
}

不少利用Go写的开源项目中的锁同样实现了官方的Locker接口,并拓展了自己的功能,例如图中的etcd.concurrency包,

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值