【问题标题】:C++:Boost: Does Managed Shared Memory Require a Semaphore lock?C++:Boost:托管共享内存是否需要信号量锁?
【发布时间】:2017-02-02 00:53:37
【问题描述】:

我有两个进程共享一个字符串向量。

  • 进程 A 只会将字符串推入向量中
  • 进程 B 将读取字符串并将其从向量中删除

这是否需要信号量来防止数据损坏? boost 是否已经使用 managed_shared_memory 处理了这个问题?

谢谢

【问题讨论】:

    标签: c++ boost shared-memory


    【解决方案1】:

    据我所知,boost 可以处理它。 This page should have all the information you need

    “Boost.Interprocess 使用 managed_shared_memory 或 managed_mapped_file 在进程之间提供托管共享内存。两个进程只需映射相同的内存可映射资源并读取和写入该对象。”

    【讨论】:

      【解决方案2】:

      Boost 托管共享内存确实需要信号量锁,否则进程可以读取和写入错误数据 - 并且会发生意外行为。 (分段错误或其他)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多