何时使用 C++11 互斥锁、锁、unique_lock、shared_lock 等

2024-02-16

  1. 有什么区别shared_lock and shared_mutex.lock_shared()除此之外的析构函数shared_lock解锁关联的互斥体?
  2. Is a shared_mutex我可以使用的唯一互斥类shared_lock?
  3. 为什么有人想要使用lock_guard代替unique_lock?
  4. 如果我有很多线程不断锁定读取(shared_lock)一个变量,我有一个试图锁定它以进行写入的变量(unique_lock),这个写入线程会比其他线程有优先级吗?
  5. 对于#4,有可能出现死锁吗?

  1. shared_mutex.lock_shared()是一个锁定的函数调用shared_mutex在共享模式下,同时shared_lock是一个“锁类”,用于在作用域末尾锁定和自动解锁互斥体。

  2. 不,你可以使用shared_lock与任何满足的类型共享互斥体 https://en.cppreference.com/w/cpp/named_req/SharedMutex要求。

  3. 总是使用lock_guard除非你需要额外的功能unique_lock。这样你的意图就更明确了。

  4. 这不取决于shared_lock or unique_lock,但是关于什么SharedMutex您正在使用。标准未指定确切的行为。但这里有一些线索:

    • 在 Windows 上shared_lock通常会使用SRWLOCK并努力做到公平,例如会尽力平衡读者和作者。这里没有人会拥有更高的优先权。
    • 在 POSIX 系统上shared_mutex很可能会在之上实施pthread_rwlock_t并且实现通常会优先考虑读者,因为它需要支持递归读锁。
    • Boost shared_mutex力求公平,不偏袒任何一方。
  5. 符合读者喜好shared_mutex如果总是至少有一个读者持有锁,那么您的写入线程可能永远不会获取该锁。

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

何时使用 C++11 互斥锁、锁、unique_lock、shared_lock 等 的相关文章

随机推荐

  • 地图 V2 标记按下状态

    在 Maps V2 中 如何将标记设置为按下状态 setIcon 方法采用 BitmapDescriptor 我看不到一种传递 XML 选择器的方法 该选择器将给出按下和选择的状态 实现此目的的唯一方法是重写 OnMarkerClickLi
  • 如何在socket.io 1.0中存储客户端相关数据

    文档说 socket io 现在不支持 get set 可以存储客户端相关数据吗 io sockets on connection function client client on data function somedata clien
  • 限制对 Application Load Balancer 的访问的最佳方法是什么?

    理想情况下 我想锁定我的 ALB 以便只能通过 API 网关访问它 我研究了是否可以将 API 网关与入站规则关联 但是 我发现 API 网关无法与 IP 地址或安全组关联 我还研究了面向内部的 ALB 但我无法让这些工作 因为 VPC 链
  • HBase 扫描时出现 java.lang.NoClassDefFoundError

    我正在尝试运行 MapReduce 作业来扫描 HBase 表 目前我使用的是Cloudera 4 4附带的HBase 0 94 6版本 在我的程序中的某个时刻 我使用 Scan 并使用以下命令正确导入它 import org apache
  • EHCache如何实现其事务?

    这个问题可能听起来很模糊 但我试图理解 EHCache 事务能力的一般概念 假设我将 EHCache 配置为内存缓存 并且还将其配置为缓存MyObject EHCache是 否克隆实例MyObject我正在检索这是否是作为交易的一部分完成的
  • “飞行模式”打开时SIM状态的值是多少

    我想知道返回的SIM状态值是多少TelephonyManager getSimState http developer android com reference android telephony TelephonyManager htm
  • Jersey/JAXB:对 HTTP POST 和 GET 使用相同的 POJO,但在 JSON 响应中仅返回 GET 属性的子集。

    这似乎是另一件相当简单的事情 但我再次为如何做到这一点而苦苦挣扎 我有一个带有 Jersey JAXB 注释的 POJO 该注释具有与其关联的 HTTP POST 和 GET 方法 在 POJO 上执行 POST 时 请求正文以 JSON
  • 如何使用 NetBeans GUI Builder 包含自定义面板?

    我编写了一个扩展 JPanel 的类 是否可以在 NetBeans GUI Builder 中使用它并让它在所有自动代码生成过程中幸存下来 我已经使用 GUI 构建器中的自定义代码选项将对象实例化为新类 但似乎无法从 JPanel 更改声明
  • 单击按钮时 UITextField 不会结束编辑(委托 textFieldDidEndEditing )

    我有两个textFields在屏幕上和一个Submit button 用户在第一个文本字段中输入详细信息 然后在第二个文本字段中输入详细信息 我的要求是结束编辑Submit button单击并打印这些中的用户输入textFields 我在打
  • OkHttp3 返回超时异常

    我使用 okhttp3 作为网络库 使用 Node mongo 作为后端服务 有时 当我的应用程序启动时 它会显示超时异常 当我关闭应用程序并再次启动它时 它会从服务器获取数据 没有错误应用程序 但我想知道为什么显示超时异常 下面是我在列表
  • ggplot2 中的旋转和间距轴标签

    我有一个图 其中 x 轴是一个标签很长的因子 虽然可能不是理想的可视化 但现在我想简单地将这些标签旋转为垂直 我已经用下面的代码解决了这部分问题 但正如您所看到的 标签并不完全可见 data diamonds diamonds cut lt
  • 如何从控制台访问 Ember 数据存储?

    在 Ember 2 中 有谁知道如何获取对 Ember Store 的引用 以便对 javascript 控制台中的模型映射进行故障排除 本来可以通过App container lookup在 Ember 1 中 但这已经不存在了 而且很难
  • PhantomJS 和 iFrame

    我正在使用 phantomjs 1 5 和casperjs http casperjs org 用于我的功能测试 casper require casper create loadImages false casper start http
  • 在 Objective-C 中定义协议类别?

    在 Objective C 中 我可以使用类别向现有类添加方法 例如 interface NSString MyCategory BOOL startsWith NSString prefix end 是否也可以使用协议来做到这一点 即如果
  • ctorParameters.map 不是 angular2-mdl 中的函数

    我正在尝试将 Angular2 mdl 与 Angular CLI 一起使用 我导入了MdlModule在 app module ts 中 当我尝试使用时
  • 在 Go (Golang) 中枚举注册表值

    我正在尝试使用 Go 枚举 Windows 注册表中的值列表 但遇到了一些麻烦 我尝试了两种方法 使用 Go 提供的syscall要调用的库RegEnumValue 也使用 lxn 的 Windows API 包装器 https githu
  • NSDateFormatter 谜题!这是新的山狮虫吗?

    我相信我可能发现了一个错误NSDateFormatter 我不确定这是否本地化为在系统偏好设置中指定了巴西时区 完整的项目在这里 http www idanfe com dl nsDateFormatterPuzzle zip http w
  • 文本描边(-webkit-text-lines)css问题

    我正在使用 NextJs 和 TailwindCSS 开发一个个人项目 完成项目后 我使用私人导航器来查看进度 但似乎笔画没有按应有的方式工作 我在除 Chrome 之外的所有浏览器中都遇到了这种情况 这是我得到的 这是所需的行为 Code
  • ASP.NET 开发服务器未更新对标记/代码的更改

    我最近一直在开发 ASP NET 开发服务器 在一个 MVC 项目中 我发现它在如何服务于我对代码所做的更改方面不一致 例如 我对 C 在开发环境中运行 HTML CSS JS 并运行页面 更改会出现在屏幕上 但是如果我再次编辑 HTML
  • 何时使用 C++11 互斥锁、锁、unique_lock、shared_lock 等

    有什么区别shared lock and shared mutex lock shared 除此之外的析构函数shared lock解锁关联的互斥体 Is a shared mutex我可以使用的唯一互斥类shared lock 为什么有人