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

2024-05-04

我遇到了一个std::shared_mutex in C++17。到底是什么std::shared_mutex以及它有何不同std::mutex?


如中所述文档 http://en.cppreference.com/w/cpp/thread/shared_mutex

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

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

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

它有多种用途,但一个常见的用途是实现读写锁 https://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock您可以有多个线程读取共享数据,但任何时候只有一个线程专门写入。因此,当您有多个读取器时,互斥体以“共享模式”运行,但当请求写入时,它会变为“独占模式”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

std::mutex 和 std::shared_mutex 之间的区别 的相关文章

随机推荐