栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【GoLang】同步锁 Mutex

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【GoLang】同步锁 Mutex

博主介绍: 自媒体 JavaPub 独立维护人,全网粉丝15w+,csdn博客专家、java领域优质创作者,51ctoTOP10博主,知乎/掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、GoLang 技术领域和副业。


GoLang学习更方便,一文在手,面试我有
GoLang面试 | GoLang面试 | GoLang面试


文章目录
    • 同步锁
    • 案例
    • 面试题

同步锁

golang当中提供了两种常用的锁。

一种是 sync.Mutex (互斥锁) 另外一种是 sync.RWMutex (读写锁)

Mutex,它就是最简单最基础的同步锁,当一个goroutine持有锁的时候,其他的goroutine只能等待到锁释放之后才可以尝试持有。

RWMutex 是读写锁的意思,它支持一写多读,也就是说允许支持多个goroutine同时持有读锁,而只允许一个goroutine持有写锁。当有goroutine持有读锁的时候,会阻止写操作。当有goroutine持有写锁的时候,无论读写都会被堵塞。


案例

假设我们当前有多个goroutine,但是我们只希望持有锁的goroutine执行,我们可以这么写:

var lock sync.Mutex

for i := 0; i < 10; i++ {
    go func() {
        lock.Lock()
        defer lock.Unlock()
        // do something
    }()
}

RWMutex区分了读写锁,所以我们一共会有4个api,分别是Lock, Unlock, RLock, RUnlock。Lock和Unlock是写锁的加锁以及解锁,而RLock和RUnlock自然就是读锁的加锁和解锁了。


面试题

Go 当中同步锁有什么特点?作用是什么?

  1. 阻塞。用于并发操作之间数据的安全保障。

回复1024,获取学习路线思维导图、加入GO计划学习
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031859.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号