【问题标题】:boost::interprocess shared memoryboost::进程间共享内存
【发布时间】:2017-07-20 20:55:25
【问题描述】:

我的环境是 Windows 2008/2012 C++ VS2013。我希望 stl 映射在热重启后仍然存在。使用 boost:interprocess 是一个解决方案,其中重新启动的应用程序是服务器端对地图进行更新,另一个客户端应用程序将连接到同一个共享内存段,只是为了保持它“活动”,如果服务器应用程序崩溃并且当服务器应用程序崩溃时/restarts 出于什么原因?

【问题讨论】:

    标签: c++ windows visual-studio boost


    【解决方案1】:

    是的,你可以这样做。

    您可以使用 interprocess::shared_ptr 来获得您建议的引用计数。

    请记住,映射内存不是神奇的事务性内存,因此在发生硬故障时可能会发生损坏。如果您需要健壮的状态持久性,请使用适当的数据库持久性提供程序。

    【讨论】:

    • 好的,太好了!是否可以提供一个我正在尝试做的例子?另外,您对合适的数据库持久性提供程序有什么建议吗?
    • Sqlite 是最容易部署的。否则,Postgres、Mysql、SQLServer、某种no-SQL database(但请注意;有些有开箱即用的配置非常不健壮的记录)