【发布时间】:2017-08-25 13:21:12
【问题描述】:
我正在编写实时数据以增加共享内存。最初我每次想访问 shm 时都使用它:
boost::interprocess::managed_shared_memory segment(boost::interprocess::open_or_create, "MySharedMemory",20000000);
在调试模式下我发现这个调用总是抛出这个异常:
First-chance exception at 0x00007FFA30BB95FC in testerud.exe: Microsoft C++ exception: boost::interprocess::interprocess_exception at memory location 0x000000000550E1C0.
但我能够打开并将我的数据推送到共享内存。我找到了解决这个问题的方法。我在进程开始时为open_or create 创建了另一个函数,然后每次都使用open_only 编写。也不例外。
我很好奇这背后的原因。
【问题讨论】:
-
“在调试模式下,我发现这个调用总是抛出这个异常”——如果你说它总是失败,频率有什么关系?
-
另外,如果没有其他线程/进程,为什么每次都打开段?保持段打开。否则“实时”很快就会成为说“狗慢”的好方法
-
是的,这里不相关。我会删除它。谢谢。
-
我正在关闭它,因为我有另一个应用程序可以访问和转储数据。
-
这就是原因。干得好! (哦,啊哈,我以为您的意思是结束问题,我想您不妨接受现有答案)
标签: c++ boost shared-memory