【C++之锁的机制】深入剖析锁的本质

C++锁机制

多线程并发时对锁机制需要有一定了解。

c++的锁包含两部分:同步原语RAII封装器

同步原语有std::mutex、std::shared_mutex、std::timed_mutex、std::recursive_mutex、std::shared_timed_mutex 和 std::recursive_timed_mutex等;

RAII 封装器包含 std::unique_lock、std::lock_guard 和 std::shared_lock等。

std::mutex 是能用于保护共享数据免受从多个线程同时访问的同步原语,也就是最常见的互斥锁概念。

std::shared_mutex 同样也可用于保护共享数据不被多个线程同时访问。但是与 std::mutex 等其他互斥类型不同,std::shared_mutex 拥有二个访问级别:

  • 共享 - 多个线程能共享同一互斥的所有权。
  • 独占性 - 仅一个线程能占有互斥。

std::shared_mutex 比一般的 std::mutex 多了函数 lock_shared() / unlock_shared(),允许多个(读者)线程同时加锁、解锁,而 std::shared_lock 则相当于共享版的 std::lock_guard。
对 std::shared_mutex 使用 std::lock_guard 或 std::unique_lock 就达到了写者独占的目的。

因此 std::shared_mutex 是C+

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值