【问题标题】:Boost message queue提升消息队列
【发布时间】:2011-11-04 12:41:29
【问题描述】:

我有以下与 boost::interprocess::message_queue 相关的问题。

按照预期,我计划在 >= 2 个进程之间共享一个消息队列。显然,其中一个可能会在消息队列中崩溃。结果,它将持有内部锁,使其他进程无法访问队列。如何解决?似乎没有办法解锁使用的内部互斥锁。

【问题讨论】:

    标签: boost message-queue boost-interprocess


    【解决方案1】:

    我们可以在其他进程中使用谓词等待的方法(根据要求1分钟或更长),如果满足则由第二个进程强制解锁队列,然后再次锁定推送和读取后解锁?

    更多详情请参阅以下参考文献。

    http://en.cppreference.com/w/cpp/thread/condition_variable/wait

    编辑:

    我们无法解锁内部锁,我以为您手动锁定了队列 使用

    scoped_lock 锁(互斥锁);

    所以你可以在时间结束时使用 predicate_wait 解锁然后解锁它。 来自其他进程。

    【讨论】:

    • 嗨阿里,我们如何“通过第二个进程强制解锁队列”?
    • 您好,强制是指条件满足后手动解锁队列。
    • 请指定使用哪种方法“手动解锁队列”boost.org/doc/libs/1_55_0/doc/html/boost/interprocess/…
    • 抱歉,请查看我的编辑,但您可以使用自己的锁来避免这种情况。
    • 问题是message_queue是内部同步的。我认为我不能以线程不安全的方式访问并将其与我自己的锁“外部”同步。在获取内部锁时,我的其他线程总是有可能崩溃。
    猜你喜欢
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 2018-11-23
    • 1970-01-01
    • 2013-06-07
    • 2018-05-12
    • 1970-01-01
    相关资源
    最近更新 更多