我认为我终于掌握了boost的基础知识:进程间库,在处理包含几个成员变量的相对简单的类时,我一直在成功使用它,这些类都是标准数据类型。
但是,我现在面临的问题是将一个相当复杂的类推送到进程间共享内存中,而我根本就没有运气。我希望这里有人可以提供帮助(或者可以引导我寻求替代解决方案)。把它剥离到我希望的基础,我有这样的东西:
// 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对象的向量,以便多个进程可以访问数据。无论我尝试什么,我似乎无法找到解决方案。看起来应该有一种比在进程间版本(interprocess :: vector,interprocess :: string,offset_ptr等)中使每个成员变量更简单的方法,但可能不是。即便如此,我也不确定如何处理所有分配器等,更不用说GSL库结构了。
帮助!
答案 0 :(得分:0)