当前位置:  技术问答>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)进行操作?

谢谢大家

|


既然要D相当于共享数据,而M对共享数据进行操作------而且M还可以呗P1和P2使用
该问题换句话说就是:
M必须设计为一个可以操作共享数据的可重入函数
为达到上述要求,目前我想到的方法只能靠同步机制了(锁 信号量等等都行)

举个例子
M()
{
    //code。。。
     Lock(&mutex)
     //code to operate your D
    UnLock(&mutex)
    //code...
}

更详细的方法,请查阅有关"重入函数"和"同步机制"的资料

|

把c类封装成一个库, 接口设计的通用点。D数据如果是P1 P2 都访问的且在一台机器上,就放在共享内存里面, 和c类封装在一起。

|
共享内存 + 信号灯
类C的实现独立封装为一个动态库

|


方法为什么要放到共享内存里面呢?

只要将类中的数据(D)放在共享内存里,类C提供访问的接口(操作方法),不就可以了么

|
不懂,观望

|
共享内存 或FIFO ;再使用锁或者信号使的两个进程的操作相互独立

    
 
 

您可能感兴趣的文章:

  • 如果一个server进程要fork许多子进程,但不等待子进程终止,也不希望子进程结束后处于僵进程状态直到父进程终止。请问可采用什么方法实现
  • 如何实现子进程根据父进程的信号来确定是否终止子进程???
  • 我要实现当进程打开文件时,根据文件名判断是否符合要求,符合后处理文件,再把文件返回给进程,怎么实现啊
  • linux命令如何实现重启父进程而不会使其子进程退出
  • 如何实现这样的API,可同时被不同的进程/线程使用,但是又不区分进程/线程?
  • 请教急:shell怎么实现进程监控,重启进程
  • 请教如何编程实现父进程产生多个子进程
  • 在linux,如何用共享内存来实现进程间的通讯?(这些进程没有父子关系)
  • help help busy!!! 请问如何让一个进程进入dead状态或者编程实现让一个进程进入dead状态
  • liunx中如何用C实现检测某个进程时候存在,如不存在,启动该进程。。。。。。。。
  • 守护进程接收信号杀死或重启子进程 如何实现?
  • 如何实现管道和后台进程
  • 怎么实现这个类?(进程间通信)
  • 单个消息队列能实现进程间聊天功能吗?
  • 进程同步,用进程+SYS V信号量实现如下前趋图
  • 怎么实现父进程不管被Kill掉还是自己错误而退出,子进程都不会受影响而被终止
  • 进程间通信:pthread_cond使用在线程间,我要进程间条件同步(没有情缘关系的进程),采用什么方呢?也就是说我要在UNIX实现WIN32上命名Event的功能
  • linux下怎样实现进程间的通讯,急用啊 !!!!!!!!!!!
  • unix的进程pooling是如何实现的
  • 多个进程对系统V共享内存进行读写,怎样实现对共享内存部分进行加解锁?
  • Linux 共享内存介绍及实现代码
  • linux下如实现与window下的驱动器实现文件共享??
  • linux与windows如何实现共享
  • 请教POSIX 和 System V 实现的内存共享的相同及不同之处
  • 急,请问linux可以实现跟win2K的网络共享吗?
  • Linux怎样实现单网卡共享上网????????????????
  • 如何实现Unix/linux服务器之间文件的相互共享?
  • 怎么实现INTERNET共享呢?
  • 如何实现linux和win2000下的资源共享?
  • 如何用RedHat 9.0自带的Apache在局域网内实现文件共享?
  • unbuntu下安装了VirtualBox装了个 XP的虚拟机,那么这两个系统之间怎么实现资源共享?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • interface 到底有什么用???实现接口,怎么实现??
  • 通过javascript库JQuery实现页面跳转功能代码
  • 怎么用Jsp实现在页面实现树型结构?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • php实现socket实现客户端和服务端数据通信源代码
  • 网站重定向用C语言实现iptables,ACL实现
  • flash AS3反射实现(describeType和getDefinitionByName)
  • 在linux下如何编程实现nslookup命令实现的IP地址和域名互相转换的功能?
  • boost unordered_map和std::list相结合的实现LRU算法
  • 求在freebsd+Squid下实现pc上网的透明代理的实现方法!给出具体配置方法的高分谢!
  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • qt如何实现:操作键盘实现数据的滚动?
  • 使用java jdk中的LinkedHashMap实现简单的LRU算法
  • 我想用APPLET实现读取客户端的图片文件,该如何实现?
  • iphone cocos2d 精灵的动画效果(图片,纹理,帧)CCAnimation实现
  • PING是用TCP,还是用UDP来实现的?或是采用其它协议实现的?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • ejb-ql只能 like '?%' 么?我想实现模糊查寻,想实现 like'%?%' 怎么办??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3