提升managed_windows_shared_memory find()崩溃

时间:2014-06-19 19:33:25

标签: c++ boost boost-interprocess

我正在尝试为第三方应用程序开发一个dll插件,该应用程序读取由另一个exe生成的数据。我正在使用boost::managed_windows_shared_memory

exe创建共享内存并向其写入一个正常工作的对象。但是,当我尝试在dll代码中找到该对象时,我的第三方应用程序崩溃了。我经常搜索并遇到this post。最后一个答案提到使用find()会产生死锁。

我尝试使用boost::interprocess_mutex,但它也没有用。关于我如何解决这个问题的指导方针?谢谢!

在exe中:

boost::interprocess::interprocess_mutex myMutex;

myMutex.lock();

i = managed_shm.find_or_construct<int>("MyInteger")(992); 

myMutex.unlock();

在dll中:

boost::interprocess::interprocess_mutex myMutex;

myMutex.lock();

std::pair<int*, std::size_t> p = managed_shm.find<int>("MyInteger"); 

myMutex.unlock();

1 个答案:

答案 0 :(得分:1)

当将放置在共享内存中时,将使用进程间(匿名)。如果要使用它来管理共享内存区域的创建或者从共享内存外部同步对它的访问,请使用名为mutex的