1、读写锁:sync.RWMutex
变量的访问,put(set) / get 读写操作
成对的指针方法:
Lock(), 写锁定
** Unlock(), 写解锁**
**
**
** RLock(), 读锁定**
** RUnlock(), 读解锁**
- 读写锁的使用中锁定规则:
- 写操作都是互斥的。
- 读和写是互斥的。
- 读和读不互斥。 //读基本不存在不安全性
理解为:
可以多个goroutine同时读取数据,
但是写只允许一个goroutine写数据。
1 | package main |
结果:读和读锁不互斥,读写锁****互斥
1 | goroutine 2,-----尝试读锁定... |
结果:读和读锁不互斥,读写锁互斥
1 | goroutine 1,-----尝试读锁定... |
2、读写锁练习:
1 | package main |
结果:
1 | 读操作... 2 即将读取数据... |
3、并发读写Map:
3.1 并发读写map
1 | package main |
结果:
1 | -------------------------------------01.测试-并发读写map------------------------------------------ |
3.2 带读写锁的并发读写map
1 | package main |
结果:
1 | -------------------------------------02.测试-带读写锁的并发读写map---------------------------------- |
- 本文作者: 梁俊可
- 本文链接: http://ljk3d.com/2021/10/19/goLangNote/goLangBasic/16_GoLang语言入门_基础语法_并发与多线程05_读写锁/
- 版权声明: 梁俊可工作室