模块化c ++应用程序设计和shm共享内存

时间:2018-11-09 09:56:38

标签: c++ stl c++17

我需要重构工业过程应用程序,以使其非常容易模块化/可定制。

此应用程序将使用模块/插件。 每个模块都包含一个可用来驱动一个单元的功能(像3D打印机一样想象,我有XY单元,打印头加热单元,送丝单元...)。但是我的应用程序确实比那个更大...

每个插件都必须通过系统中的共享内存区域共享数据资源(用于gui进程)

我需要找到一种在系统共享内存区域内共享某些类的数据(POD数据)的方法。

面临的挑战是找到一种以最简单的方式实现它的方法。 模板,名称空间...或其他c ++ 17功能可能会受到欢迎。 它可能涉及对现有应用程序的完整思考/重构。 目前,这意味着我有一个带有包含数据的结构的类:

typedef struct mydata {
   int data1;
   float data2;
} T_mydata; 


struct{
   // some data ...
   ...
   // ptr to class struct data 
   T_mydata a_ptr;
   // some other data ...
}
*shmptr;

class A {
T_mydata *data_ptr; // will point *shmptr->a_ptr;
... 
};

1 个答案:

答案 0 :(得分:0)

用于实现共享内存,通信等。boost::interprocess库具有用于simpel的实用程序以及相当复杂的概念。