std::mutex 和 std::shared_mutex 之间的区别

新手上路,请多包涵

我在 --- 中遇到了一个 std::shared_mutex C++17std::shared_mutex 到底是什么,它与 std::mutex 有何不同?

原文由 asad_nitp 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
1 个回答

文档中所述

shared_mutex 类是一个同步原语,可用于保护共享数据不被多个线程同时访问。与其他便于独占访问的互斥锁类型相比,shared_mutex 具有两个访问级别:

  • shared—— 多个线程可以共享同一个互斥体的所有权
  • 独占 - 只有一个线程可以拥有互斥锁。

共享互斥锁通常用于多个读取器可以同时访问同一资源而不会导致数据竞争但只有一个写入器可以这样做的情况。

这有多种用途,但一个常见的用途是实现 读写锁,您可以让多个线程读取共享数据,但在任何时候只有一个线程独占写入。因此,当您有多个阅读器时,互斥锁以“共享模式”运行,但当请求写入时,它会变为“独占模式”。

原文由 Cory Kramer 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题