读书人

多个过程间能否共享相同的类对象

发布时间: 2012-09-13 09:51:52 作者: rapoo

多个进程间能否共享相同的类对象?
我有一个类,里面有成员变量也有成员函数,如:
class A
{
public:
int m_iPubData;
map<int, string> m_mapKeyValue;
bool DoA(int i);
bool LoadDataFromFile(char* pFileName);
private:
int m_iDate;
char* m_pchStrData;
SetStringValue(char* pStrData);
}

因为A对象的数据都是根据一个xml文件生成的,我有三个进程,现在每个进程(进程1,进程2,进程3)都使用A* pa = new A; 然后使用pa->LoadDataFromeFIle函数生成了带数据的pa对象,而xml文件是同一份。这样的话,造成了三个进程都申请了内存,浪费了内存。

请问各位高手,有没有办法我只在进程1中申请内存生成一个pa对象,其它两个进程直接共享进程1中的pa对象?

如果是不带方法的结构体,使用共享内存很容易共享,但有方法的类对象怎么共享,可真是难倒我和我的同事了:(

[解决办法]
说实话,内存共享真不是一个好的教程间通讯的方法,没有扩展性。
等你哪天想把2个程序分别放在2台计算机上的时候,就可以哭了。
[解决办法]
共享内存, SOCKET, 消息队列, 命名管道, 父子进程可以用管道.
[解决办法]
怎么帮顶一下,一会儿就被删掉了呢?
[解决办法]
共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的:
·进程之间松耦合
·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。
·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。
·方便在线开关服务,只需删除或创建该临时文本文件即可。
·方便实现分布式和负载均衡。
·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满)
·……

读书人网 >C++

热点推荐