崩溃后仍会获取名为互斥量的升压进程间

2024-01-02

我正在使用一个boost::interpocess::scoped_lock用一个named_mutex and a timeout;我正在Linux操作系统中运行。

在我的一次测试中,我发生了崩溃:从那时起,每次我尝试再次运行该应用程序时,它都会卡在我创建锁的位置;看起来互斥锁仍然以某种方式获取(没有可能使用它的进程正在运行)。

最重要的是,如果你看下面的代码,我预计 150 微秒后,定时scoped_lock返回给我一个错误..但事实并非如此..它只是挂在那里。

      #include <boost/interprocess/sync/named_mutex.hpp>
      namespace bi = boost::interprocess;
      bi::named_mutex m_mutex;

 try{
      boost::posix_time::ptime pt( 
          boost::posix_time::microsec_clock::local_time() ) ;

      pt+= boost::posix_time::microseconds( 150 );
      bi::scoped_lock< bi::named_mutex > lock( m_mutex, pt );

      if( !lock.owns() ){
        FATAL( "I didn't acquire the lock." );
           return EXIT_FAILURE;
      }
     ....

我的问题如下:

  1. 如何确保boost::interprocess命名的互斥体被破坏了吗? (那么如何查看跨进程的共享互斥体以及如何销毁它们)
  2. 为什么获取互斥锁在 150 微秒后没有返回?下面的代码有什么问题吗?

多谢

AFG


我找到了解决方案:我错过了调用以下方法来销毁互斥体

 boost::interprocess::named_mutex::remove( "MutexName" );

这段代码进行了所有必要的清理。

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

崩溃后仍会获取名为互斥量的升压进程间 的相关文章

  • 如何从单独的进程监控应用程序崩溃

    我有一个特定的 net 应用程序 偶尔会因以下 Windows 错误之一而崩溃 application name has encountered a problem and needs to close We are sorry for t
  • 使用等待时 Monitor.Exit 上的 SynchronizationLockException

    我正在创建一段代码 从我们拥有的遗留系统中获取网页 为了避免过多的查询 我对获取到的URL进行了缓存 我在用Monitor Enter Monitor Exit并双重检查以避免请求发出两次 但在释放锁时Monitor Exit 我收到此异常
  • 为什么 std::condition_variable::wait 需要互斥锁?

    TL DR 为什么std condition variable 等待 http en cppreference com w cpp thread condition variable wait需要互斥锁作为其变量之一吗 Answer 1 您
  • 将文件中的非连续块映射到连续内存地址

    我对使用内存映射IO的前景感兴趣 最好是 利用 boost interprocess 中的设施实现跨平台 支持 将文件中的非连续系统页面大小块映射到 内存中连续的地址空间 一个简化的具体场景 我有许多 普通旧数据 结构 每个结构都有固定长度
  • C# - 互斥锁的锁定问题

    我有一个 Web 应用程序 可以控制哪些 Web 应用程序从我们的负载均衡器获取服务流量 Web 应用程序在每个单独的服务器上运行 它在 ASP NET 应用程序状态的对象中跟踪每个应用程序的 输入或输出 状态 并且只要状态发生更改 该对象
  • 我们如何在 Swift 中实现等待/通知

    在Java中 我们可以这样做 synchronized a while condition false a wait time critical section do something 上面是一个条件同步块 它等待条件成功才能执行临界区
  • std::mutex 会创建栅栏吗?

    如果我锁定一个std mutex我总会得到一个记忆栅栏吗 我不确定这是否暗示或强迫你获得栅栏 Update 根据 RMF 的评论找到了这个参考资料 多线程编程和内存可见性 http en wikipedia org wiki Memory
  • 使用 async/await 锁定资源

    我有一个应用程序 其中有一个可由多个客户端访问的共享资源 运动系统 我有一些单独的操作 需要在移动期间访问系统 并且如果同时请求冲突的操作 则应抛出 繁忙 异常 我还有序列器 它们需要获得对运动系统的独占访问权限 以执行多个操作 并穿插其他
  • 使用 rsync 进行双向同步

    我有一个文件夹 a 和一个远程文件夹 A 我现在在 Makefile 上运行类似的内容 get music rsync avzru server media 10001 music media Incoming music put musi
  • 如何在多台机器上同步本地托管的 Greasemonkey 脚本?

    我希望能够在我使用的所有计算机上访问我的 Greasemonkey 脚本 我已经启用了 启用 Firefox 同步用户脚本 在 Greasemonkey 的设置对话框中进行设置 但后来我读到它仅同步外部托管的脚本 然后我尝试使用以下方法设置
  • C++11内存_顺序_获取和内存_顺序_释放语义?

    http en cppreference com w cpp atomic memory order http en cppreference com w cpp atomic memory order以及其他 C 11 在线参考 将 me
  • Java 和 C/C++ 之间进程间通信的最快(低延迟)方法

    我有一个Java应用程序 通过TCP套接字连接到用C C 开发的 服务器 应用程序和服务器都在同一台机器 Solaris 机器 上运行 但我们最终正在考虑迁移到 Linux 交换的数据类型是简单消息 登录 登录ACK 然后客户端请求某些内容
  • Linux 消息队列 - 多个接收者

    我最近一直在研究和研究 Linux 消息队列 并遇到了一些我不太明白为什么会发生的事情 如果我们运行两个程序 它们都在无限 for 循环中使用 msgrcv 来检查消息 然后发送两条消息 那么第一个运行的程序将收到第一条消息 第二个程序将收
  • boost::shared_mutex 多读取器/单写入器互斥体

    我正在尝试使用 boost shared mutex 来实现多读取器 单写入器互斥体 我的问题相当简单 当另一个线程尝试锁定共享互斥体进行写入时 线程是否有可能获得对共享互斥体的读取器访问权限 例如 我有10个线程 只有其中一个可以写 线程
  • Git 和 Dropbox - 本地存储库

    我阅读了大量有关 Dropbox 和 Git 功能结合的帖子并观看了许多视频 其中一个线程是这样的 有效地结合使用 Git 和 Dropbox https stackoverflow com questions 1960799 using
  • 在 Matlab、VB6 和 VB.NET 程序之间发送消息的最简单方法

    我们正在将一套数据采集和分析例程从 VB6 程序升级为 VB NET VB6 和 Matlab 程序的混合体 我们希望保持系统模块化 单独的 EXE 以便我们可以轻松创建专门的独立分析程序 而无需不断升级大型应用程序 当所有程序都是用 VB
  • C# 中的监视器与互斥体[重复]

    这个问题在这里已经有答案了 可能的重复 C 中各种线程同步选项之间有什么区别 https stackoverflow com questions 301160 what are the differences between various
  • 关于java中同步的问题;何时/如何/到什么程度

    我正在开发我的第一个多线程程序 并在同步的几个方面陷入困境 我已经浏览了 oracle sun 主页上的多线程教程 以及这里的一些关于 SO 的问题 所以我相信我知道什么是同步 然而 正如我提到的 有几个方面我不太确定如何弄清楚 我以明确问
  • 在.net中的lock语句中调用Thread.Sleep()

    我想知道在已经获取监视器的线程上调用 Thread Sleep 是否会在进入睡眠状态之前释放锁 object o new object Montior Enter o Thread Sleep 1000 Monitor Exit o 当线程
  • 当使用环回地址使用 TCP/IP 套接字进行 IPC 时,常见的网络堆栈是否会跳过将消息帧封装在较低级别的 PDU 中?

    在某些环境 例如 Java 中 很自然地使用 TCP IP 套接字通过 localhost 地址 IPv4 中的 127 0 0 1 或 IPv6 中的 1 在同一主机上的进程之间传递消息 因为Java倾向于不在其API中公开其他IPC机制

随机推荐

  • ASP.NET Core 流式传输 - 将块写入请求

    这是更新的问题 我的代码中曾经存在错误 我希望能够将数据块发送给客户端 任何事情都会受到赞赏 有没有办法为 ASP NET Core 提供对数据流传输方式的更多控制 我担心下面的代码如何扩展 有人可以建议如何通过 asp net core
  • 内部测试人员如何下载“Android”预发布的App版本?

    有人可以告诉我 内部测试人员如何下载 Android 预发布的应用程序版本吗 因为现在 TestFlight 仅适用于苹果收购的iOS 解决方案是否是将 Android 预发布应用程序上传到 Google Play 并邀请内部测试人员下载
  • 尝试使用 jQuery 模式弹出窗口通过 iframe 查看 pdf 文件

    我正在尝试使用 jQuery 模式弹出窗口通过 iframe 显示 pdf 文件 但是 它要求用户在页面加载时下载该文件 而不是在模式对话框打开时将 pdf 文件嵌入到 iframe 中 我该如何解决这个问题 我使用 MVC 输出 pdf
  • Android System.err 突然出现

    运行我的应用程序时 LogCat 突然显示一系列橙色消息 警告 这些消息似乎与我的应用程序完全无关 当然not具有相同的 pid 05 01 12 00 03 732 WARN System err 1836 java io FileNot
  • 在R中读取csv文件,其中货币列为数字

    我正在尝试读入 R 一个包含政治捐款信息的 csv 文件 据我了解 默认情况下 列会作为因子导入 但我需要将金额列 数据集中的 CTRIB AMT 作为数字列导入 这样我就可以运行各种不适用于的函数因素 该列的格式为带有 作为前缀的货币 我
  • 使用反引号时转义空格

    我进行了搜索 从我的角度来看 使用反引号是解决这个问题的唯一方法 我正在尝试致电mdlsPerl 命令为目录中的每个文件查找其上次访问时间 我遇到的问题是在我的文件名中find我有 bash 显然不喜欢的未转义空间 有没有一种简单的方法可以
  • 警告:mysql_real_escape_string() 期望参数 1 为字符串

    HTML代码 tr td td tr
  • Swift - 设置圆角以注释视图图像

    这是我之前的线程 我将图像设置为注释视图引脚 Swift 设置从数组到注释引脚的不同图像 https stackoverflow com questions 28033159 swift setting different images f
  • 使用 TorchText (PyTorch) 进行语言翻译

    我最近开始使用 PyTorch 进行 ML DL 下面的 pytorch 示例解释了我们如何训练一个简单的模型来将德语翻译成英语 https pytorch org tutorials beginner torchtext translat
  • 如何从 Access 数据库显示/检索或获取图像到 PictureBox?

    Private Sub UpdatePicture Dim str As String str Provider Microsoft ACE OLEDB 12 0 Data Source UsersDB accdb cn New OleDb
  • VBA XML 选择命名空间问题

    所以我确信这是可以解决的 但只是我通常不需要在 VBA XML 代码中处理 XML 命名空间 所以 我们有一个文件 它实际上是一个 SVG 文件 名为Flag of the United Kingdom svg这是文件内容
  • 为什么 MySQL 在 JOIN 加 ORDER 时不使用主键?

    这是给你的一个简洁的 显然是 MySQL Setting things up DROP DATABASE IF EXISTS index test gutza CREATE DATABASE index test gutza USE ind
  • 使用 Flask Jinja2 和 WTForms 隐藏表单组

    我试图根据表单另一部分中复选框的状态显示或隐藏表单字段 我认为我可以使用 jQuery show 或 hide 相对轻松地完成此操作 但到目前为止我运气不佳 有什么想法吗 表格类 class MyForm Form checked Bool
  • 谁能为开发人员推荐一个好的备份“系统”? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在办公室里被称为 后备人员 作为一名开发人员 我经常在项目之间来回跳转 因此 当我返回每个项目时 我并不总是准确地记得每个项目中存在哪些
  • Scraper 在处理超过 ~390KB 的文件时失败

    Facebook 的 URL 抓取工具有大小限制吗 我们的网站上有几本书可供下载 那些 HMTL 文件大小低于特定大小 390KB 的文件会被抓取并正确读取 但 4 个较大的文件则不会 这些较大的项目会收到 200 响应代码并打开规范 UR
  • 带参数的方法的异步等待问题

    我对异步等待概念有点陌生 在存储库中有以下方法 public TEntity Get int id return Context Set
  • 错误:在 res 内使用字体文件夹时,任务 ':app:processDebugResources' 执行失败

    我已将 SDK 更新为 Android O 开发人员预览版 并使用单个 TextView 开始了一个简单的演示 当我包括在内font inside res它开始向我显示的文件夹 Error Execution failed for task
  • 具有解析功能的 Angularjs ng-controller

    我遇到了 ng controller 和 解决 功能的问题 我有一个控制器 需要在运行之前解决一些依赖关系 当我通过 ng route 定义它时它工作正常 控制器代码如下所示 angular module myApp controller
  • 取消列出列表,同时保留索引

    我有一个列表 其中可以有空条目 包含一个元素的条目和包含多个元素的条目 l1 list integer 0 11L integer 0 integer 0 11L 11L c 6L 36L 16L 16L integer 0 integer
  • 崩溃后仍会获取名为互斥量的升压进程间

    我正在使用一个boost interpocess scoped lock用一个named mutex and a timeout 我正在Linux操作系统中运行 在我的一次测试中 我发生了崩溃 从那时起 每次我尝试再次运行该应用程序时 它都