Go语言读写锁
RWMutex是一个读写锁,该锁可以加多个读锁或者一个写锁,其经常用于读次数远远多于写次数的场景。
Lock方法将rw锁定为写入状态,禁止其他线程读取或者写入。如果在添加写锁之前已经有其他的读锁和写锁,则lock就会阻塞直到该锁可用,为确保该锁最终可用,已阻塞的 Lock 调用会从获得的锁中排除新的读取器,即写锁权限高于读锁,有写锁时优先进行写锁定。
Unlock方法解除rw的写入锁状态,如果m未加写入锁会导致运行时错误。
RLock方法将rw锁定为读取状态,禁止其他线程写入,但不禁止读取。
Runlock方法解除rw的读取锁状态,如果m未加读取锁会导致运行时错误。
读写锁的写锁只能锁定一次,解锁前不能多次锁定,读锁可以多次,但读解锁次数最多只能比读锁次数多一次,一般情况下我们不建议读解锁次数多余读锁
读写锁应用
读多写少的情况,用读写锁, 协程同时在操作读。
当RUnlock()在RLock()之前使用时便会报错,实例如下:
运行错误:
下一篇:
Go语言锁性能比较------敬请期待!
第十一章 并发编程
第十二章 反射
第十三章 数据格式
第十四章 终端读取
第十五章 文件操作
第十六章 时间处理
第十七章 锁机制
领取专属 10元无门槛券
私享最新 技术干货