使用message_queue和shared_memory时提升库错误

时间:2017-06-07 15:51:51

标签: c++ boost

我正在使用来自boost库的shared_memory和message_queue。

图像处理应用程序在shared_memory中提供参数和3D点,gui-application从内存中抓取数据。同步与message_queue一起使用。 它在短期内运行良好,但在更长的perdiod发生致命错误后,重启也无济于事。 之后,无法创建新的shared_memory部分或message_queue。使用' BOOST_ASSERT(ptr!= 0)'创建新的message_queue失败。 init部分的一部分看起来像下面的代码(也不再起作用):

//initializing default values - VoxelGrid_X
message_queue::remove("param_VX");
message_queue mq_VX(create_only, "param_VX", 1, sizeof(double));
mq_VX.try_send(&parameter_VX, sizeof(parameter_VX), 0);
ui->lineEdit_VX->setPlaceholderText(QString::number(convert_m_mm(parameter_VX)));

在图像处理应用程序中读取参数的一部分看起来像下面的代码:

//VoxelGrid: X
                            try {
                                unsigned int priority_VX = NULL;
                                message_queue::size_type recv_size_VX = NULL;
                                message_queue mq_VX(open_only, "param_VX");
                                mq_VX.try_receive(&leafSizeX, sizeof(leafSizeX), recv_size_VX, priority_VX);
                            }
                            catch (interprocess_exception &ex) {

                            }

可能是什么问题?有没有人有类似的经历?我很乐意得到有关可能解决方案的提示。

祝你好运, Ť

1 个答案:

答案 0 :(得分:0)

我明白了......这是一个奇怪的问题,但在这种情况下,有必要定义必须存储shared_memory的地方。 就我而言:

#define BOOST_INTERPROCESS_SHARED_DIR_PATH "C:/Shared_Memory