Boost managed_windows_shared_memory find() crash
Boost managed_windows_shared_memory find() crash
我正试图为第三方应用程序开发一个dll插件,该应用程序读取另一个exe生成的数据。我用boost::managed_windows_shared_memory
。
exe创建共享内存并向其写入一个正常工作的对象。然而,当我试图在dll代码中找到该对象时,我的第三方应用程序崩溃了。我搜索了很多,发现了这篇文章。最后一个答案提到使用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();
在共享内存中放置时,打算使用进程间(匿名)。如果您想用它来管理共享内存区域的创建,或者同步共享内存外部对它的访问,请使用一个名为互斥锁:
的互斥锁。- http://www.boost.org/doc/libs/1_55_0/doc/html/interprocess/synchronization_mechanisms.html interprocess.synchronization_mechanisms.mutexes.mutexes_named_example
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 在 QVector<std::unique_ptr 上使用 std::find<Type>>
- 错误"Could not find Boost"(缺少:上下文标头)
- /usr/bin/ld: cannot find -lc++
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- clCreateFromGLBuffer crash
- 使用 find 解析文件会给出不同文件的奇怪结果
- 在 ifcondition al中 find() C++ STL 中的 == a.end() 有什么用?
- Cannot find -lglad
- "Cannot find -l<directory>"错误 - CMake
- 为什么在向量上使用 std::find() 时会出现错误?
- 为什么映射插入和 map.find() 的单次迭代比插入和 map.find() 的两次单独迭代慢得多
- C++ find() 在存储为变量时返回不同的值
- set::find 查找不存在的元素
- 使用 std::find 时没有匹配的函数调用错误
- Protobuf ShortDebugString() crash
- Emscripten crash with mappedGlobals.find(name) != mappedGlob
- Boost managed_windows_shared_memory find() crash