我需要重构工业过程应用程序,以使其非常容易模块化/可定制。
此应用程序将使用模块/插件。 每个模块都包含一个可用来驱动一个单元的功能(像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;
...
};
答案 0 :(得分:0)
用于实现共享内存,通信等。boost::interprocess
库具有用于simpel的实用程序以及相当复杂的概念。