golang sync包的读写锁RWMutex的使用

来源:互联网 发布:网络水军怎么找 编辑:程序博客网 时间:2024/05/21 04:38

sync包的读写锁RWMutex的使用(sync.RWMutex)

我们使用“读写”锁的场景主要是在多线程的安全操作下,并且读的情况多于写的情况,也就是说既满足多线程操作的安全性,也要确保性能不能太差,这时候,我们可以考虑使用读写锁。当然你也可以简单暴力直接使用互斥锁(Mutex)。

RWMutex的使用主要事项

  • 1、读锁的时候无需等待读锁的结束
  • 2、读锁的时候要等待写锁的结束
  • 3、写锁的时候要等待读锁的结束
  • 4、写锁的时候要等待写锁的结束

RWMutex的四种操作方法

RLock() //读锁定
RUnlock() //读解锁

Lock() //写锁定
Unlock() //写解锁


废话少说直接上代码:

package mainimport (    "sync"    "time")var m *sync.RWMutexfunc main() {    m = new(sync.RWMutex)    go write(1)    go read(21)    go write(3)    go read(22)    go write(4)    go read(23)    go write(5)    go read(24)    go write(6)    go read(25)    go write(7)    time.Sleep(20 * time.Second)}func read(i int) {    println(i, "read start")    m.RLock()    var p = 0    var pr = "read"    for {        pr += "."        if p == 10 {            break        }        time.Sleep(350 * time.Millisecond)        p++        println(i, pr)    }    m.RUnlock()    println(i, "read end")}func write(i int) {    println(i, "write start")    m.Lock()    var p = 0    var pr = "write"    for {        pr += "."        if p == 10 {            break        }        time.Sleep(350 * time.Millisecond)        p++        println(i, pr)    }    m.Unlock()    println(i, "write end")}

执行结果:
这里写图片描述
这里写图片描述

什么也不说了,如想更加深刻理解,请复制上面代码自己运行看看。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 刚拿c1驾照扣6分怎么办 别人开我车扣12分怎么办 办健康证大便拉不出来怎么办 欠信用卡钱被网上通缉抓到后怎么办 上海房子卖了户口没地方迁怎么办 没有户口本在北京身份证丢了怎么办 武汉科目四考试居住证过期了怎么办 农行卡密码输错3次怎么办 驾照罚款缴纳了网上没消怎么办 外地驾驶证分数扣12分了怎么办 有生产日期的赠品在超市过期怎么办 6年免检车辆逾期未年检怎么办 行驶证检验有效期过期2年怎么办 骑摩托车忘带驾驶证和行驶证怎么办 驾驶证逾期未审验怎么办有什么后果 车祸至人腿部骨折沒钱偿还的怎么办 我有c4驾驶证想办c3怎么办 驾驶证和行驶证被交警扣了怎么办 行驶证被交警弄丢了怎么办 没带行驶证让警察发现怎么办 首尔转机换票换乘怎么办过境签证 驾驶证约考帐号与登密码丢失怎么办 考驾照的时候预约密码忘了怎么办 考驾照的预约密码忘了怎么办 摩托车不能挂档不能摘挡了怎么办 身份证丢失了派出所不给挂失怎么办 快递员在中午还送货夏天怎么办啊 驾照一个记分周期扣满12分怎么办 佛山南海车管所怎么办替人消分流程 福州快处中心几流程要怎么办 被对方追尾了对方只有交强险怎么办 摩托车行驶证年检过期一年半怎么办 户口迁到杭州了身份证掉了怎么办 户口已迁至外面要补办结婚证怎么办 汽车年检时间过了1个月怎么办 户口在老家在北京工作怎么办招工 报考驾照时手机号留错了怎么办 合肥驾照换证体检没过怎么办 驾驶证记分周期到了违章未消怎么办 驾照被扣科目一过期没考怎么办 驾驶证暂扣过了换证日期怎么办?