go语言学习笔记 — 进阶 — 并发编程(10):读写互斥锁(sync.RWMutex) —— 在读比写多的环境下,比互斥锁更高效

在读多写少的场景中,可以优先使用读写互斥锁,sync包中的RWMutex提供了读写互斥锁的封装。

var (
    count      int          // 某个逻辑中使用的变量,如包级别变量、结构体成员字段变量
    countGuard sync.RWMutex // 变量名+Guard,以表示这个读写互斥锁用于保护这个变量
)

// 获取一个count值,通过这个函数可以并发安全地访问变量count
func GetCount() int {
    countGuard.RLock() // 对互斥量countGuard加锁。一旦互斥量被加锁,如果另一个goroutine尝试继续加锁时会发生阻塞,直到互斥量解锁

    defer countGuard.RUnlock()

    return count
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值