当前位置: 技术问答>linux和unix
如何实现多进程间的方法及数据共享
来源: 互联网 发布时间:2016-12-05
本文导语: 我有一个类(C),这个类实现了对数据(D)的操作方法(M)。 还分别有两个进程(P1和P2,独立的,不是父子关系),都需要使用类(C)的方法(M)对数据(D)操作。数据(D)相当于是P1和P2都会访问和操作的数...
我有一个类(C),这个类实现了对数据(D)的操作方法(M)。 还分别有两个进程(P1和P2,独立的,不是父子关系),都需要使用类(C)的方法(M)对数据(D)操作。数据(D)相当于是P1和P2都会访问和操作的数据。
为了保持P1和P2的独立性及方便对代码的易维护性,我不想把类的实现代码分别在P1和P2中都放进去,这样的话,每次类的方法变更,都需要同时修改P1和P2的代码,并重新编译。
请问各位:有没有什么办法可以把类C独立出来(动态库或什么其它的方法),使得P1和P2在无需重新编译的情况下,可以调用类(C)的方法对数据(D)进行操作?
谢谢大家
为了保持P1和P2的独立性及方便对代码的易维护性,我不想把类的实现代码分别在P1和P2中都放进去,这样的话,每次类的方法变更,都需要同时修改P1和P2的代码,并重新编译。
请问各位:有没有什么办法可以把类C独立出来(动态库或什么其它的方法),使得P1和P2在无需重新编译的情况下,可以调用类(C)的方法对数据(D)进行操作?
谢谢大家
|
既然要D相当于共享数据,而M对共享数据进行操作------而且M还可以呗P1和P2使用
该问题换句话说就是:
M必须设计为一个可以操作共享数据的可重入函数
为达到上述要求,目前我想到的方法只能靠同步机制了(锁 信号量等等都行)
举个例子
M()
{
//code。。。
Lock(&mutex)
//code to operate your D
UnLock(&mutex)
//code...
}
更详细的方法,请查阅有关"重入函数"和"同步机制"的资料
|
把c类封装成一个库, 接口设计的通用点。D数据如果是P1 P2 都访问的且在一台机器上,就放在共享内存里面, 和c类封装在一起。
|
共享内存 + 信号灯
类C的实现独立封装为一个动态库
类C的实现独立封装为一个动态库
|
方法为什么要放到共享内存里面呢?
只要将类中的数据(D)放在共享内存里,类C提供访问的接口(操作方法),不就可以了么
|
不懂,观望
|
共享内存 或FIFO ;再使用锁或者信号使的两个进程的操作相互独立