​Go语言中的锁类型-创新互联

Go语言包中的 sync 包提供了两种锁类型:sync.Mutex 和 sync.RWMutex。  

创新互联公司专注于平坝企业网站建设,成都响应式网站建设,商城网站制作。平坝网站建设公司,为平坝等地区提供建站服务。全流程定制网站设计,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务

Mutex 是最简单的一种锁类型,同时也比较暴力,当一个 goroutine 获得了 Mutex 后,其他 goroutine 就只能乖乖等到这个 goroutine 释放该 Mutex。

RWMutex 相对友好些,是经典的单写多读模型。在读锁占用的情况下,会阻止写,但不阻止读,也就是多个 goroutine 可同时获取读锁(调用 RLock() 方法;

而写锁(调用 Lock() 方法)会阻止任何其他 goroutine(无论读和写)进来,整个锁相当于由该 goroutine 独占。从 RWMutex 的实现看,RWMutex 类型其实组合了 Mutex:

type RWMutex struct {
    w Mutex
    writerSem uint32
    readerSem uint32
    readerCount int32
    readerWait int32
}

sync.mutex 加锁后禁止其他地方读或写,这个适用于可能出现的在不同go协程中修改同一个数据

sync.rwmutex 的lock 和 unlock 的使用和sync.mutex类似

sync.rwmutex 的rlock和runlock的使用适用于要读取数据,防止在读取的同时可能出现的别的地方写入,而导致的读取失败

以上就是golang 什么时候用锁的详细内容,更多请关注创新互联其它相关文章!


新闻标题:​Go语言中的锁类型-创新互联
文章路径:http://bzwzjz.com/article/jsspo.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站建设 成都商城网站制作 高端网站设计 手机网站制作 外贸网站设计方案 成都网站设计 网站制作 梓潼网站设计 网站制作 营销网站建设 重庆网站制作 响应式网站设计 手机网站制作设计 成都企业网站建设公司 成都网站建设 企业网站建设公司 成都定制网站建设 网站建设 成都响应式网站建设 成都网站建设 成都网站制作 成都网站制作