gpt4 book ai didi

c++ - Boost::Interprocess 与复杂的嵌套类

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:02:08 25 4
gpt4 key购买 nike

我想我终于掌握了 boost:interprocess 库的基础知识,并且在处理包含一些全是标准数据类型的成员变量的相对简单的类时,我一直在成功地使用它。

但是,我现在面临着将一个相当复杂的类推送到进程间共享内存中的问题,而我一点运气都没有。我希望这里有人可以提供帮助(或者可以引导我转向替代解决方案)。将其剥离到我希望的基础知识,我有一些类似的东西:

// these first two classes are from the Gnu Scientific Library, so I can't  
// (or won't) be able to mess with the definition of these structures.
typedef struct
{
size_t size1;
size_t size2;
size_t tda;
double * data;
gsl_block * block;
int owner;
} gsl_matrix;

typedef struct
{
size_t size1;
size_t size2;
size_t tda;
int * data;
gsl_block_int * block;
int owner;
} gsl_matrix_int;

class MyNumbersClass
{
gsl_matrix_int* m_pIntMatrix;
gsl_matrix* m_pDblMatrix;
unsigned int iVal1;
unsigned int iVal2;
}

class MyOtherDataClass
{
std::vector<int> m_vInputs;
std::vector<double> m_vOutputs;
std::string m_sTitle;
bool m_bCorrect;
}

class SharedClass
{
MyNumbersClass* m_pFirstNumbers;
std::vector<double> m_vDblData;
std::vector<MyOtherDataClass> m_vOtherData;
}

我需要做的是在进程间内存空间中创建一个 SharedClass 对象的 vector ,以便多个进程可以访问数据。无论我尝试什么,我似乎都找不到解决方案。似乎应该有一种比让每个成员变量都成为进程间版本(interprocess::vector、interprocess::string、offset_ptr 等)更简单的方法,但也许不是。即使那样,我也不确定如何处理所有分配器等,更不用说 GSL 库结构了。

帮助!

最佳答案

您的问题出在 STL 容器上。如您所料,您需要使用 boost::interprocess 容器。

有关使用字符串的示例,请参阅 my answer here .有关 vector ,请参见 this .

干杯

关于c++ - Boost::Interprocess 与复杂的嵌套类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3459901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com