最近看了一些进程间通讯的资料,基本上原理是一样的,在一个线程开一个全局的服务,另外一个可以通过全名字,或者部分名字查找这个服务,然后取得这个全局服务的内存地址,得到内存中的数据。

在symbian上有RChunk,RTread等类,但是在3rd fp1上取消了RTread的Read和Write方法,所以只能用RChunk类了,调用方法如下:

一个线程启动服务:

_LIT(KChunkName,"xn Globla Chunk");
       TInt rc=iChk.CreateGlobal(KChunkName,0x1000,0x5000);

//取得共享内存地址

TUint8* uid=iChk.Base();
       HBufC* buf=HBufC8::NewL(255);
       buf->Des().Copy(_L8("123456"));
      
       //uid=&(iHbuf->Des()[0]);
       //将数据放入到共享内存中

TPtrC8 ptr;
       Mem::Copy(uid,(TAny *)buf->Des().Ptr(),buf->Length());
       //服务线程ok

另外线程:

_LIT(KChunkName,"xn Globla Chunk");
      RChunk chk;
      chk.OpenGlobal(KChunkName,0);//第一个参数指定了全局内存块的名称,第二个参数用于说明块是为只读(1)还是可写的(0)
      TUint8* uid=chk.Base();
      TPtrC8 ptr;
     //Mem::Copy(uid,(TAny *)iHbuf->Des().Ptr(),iHbuf->Length());
     ptr.Set( (const TUint8*)uid , chk.Szie());

//ok 共享内存中的数据取到了,当然也可以修改。

symbian进程间内存共享相关推荐

  1. 进程间内存共享问题[转]

    http://www.vkfz.com/net-CreateFileMapping-t55403.htm playroc 发表于 2006-2-27 23:21:08 超级难题:.net 中Creat ...

  2. linux进程间通讯-共享内存

    文章目录 共享内存概述 共享内存的特点 共享内存操作 在ubuntu 12.04中共享内存限制值如下 获得一个共享存储标识符 创建共享内存 共享内存映射(attach) 解除共享内存映射(detach ...

  3. WIN32 进程间通讯-共享内存

    一.引言     在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.WIN32 API提供了许多函数使我们能够方便高效的进行进程间的通讯,通过这些函数我们可以控制不同进程间的数据交换 ...

  4. 进程间基于共享存储区的通信_IPC(进程间通讯):inter process communication

    管道 (1)管道是半双工的,数据只能向一个方向流动:需要双方通信时,需要建立起两个管道: (2)只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程): (3)**单独构成一种独立的文件系统:**管道 ...

  5. python multiprocessing 进程间如何共享数据、对象

    参考文章1:Python 进程间的数据共享 参考文章2:Python多进程编程-进程间共享 对象

  6. linux进程实现进程通信内存共享,Linux进程间通信 -3内存共享

    内存共享允许两个或多个不相关的进程,访问同一个逻辑内存,共享内存的具体实现,由不同进程之间共享的内存安排为同一物理内存. 过个进程就像通过malloc获取的内存一样去使用,但是需要额外的小消息来同队内 ...

  7. 开启子进程的两种方式、进程间内存空间隔离、进程对象的方法或属性详解

    1.操作系统(推荐查看书籍:现代操作系统)     操作系统是位于计算机硬件与软件之间的控制程序     作用:         1.将硬件的复杂操作封装成简单的接口,给用户或者应用程序使用      ...

  8. 进程间通信(1) dll 实现进程的内存共享

    1. 两个进程访问同一个dll 2.写入时复制(CopyOnWrite,简称COW)思想 如果有多个调用者(Callers)同时访问相同的资源(如内存或者是磁盘上的数据存储),他们会共同获取相同的指针 ...

  9. c++ 内存映射文件进程间共享数据

    int main(int argc, char *argv[])   {       //RecursiveDelete("C:\\20_128\\");       //Self ...

最新文章

  1. Android开发四年以来的工作难点总结
  2. 一文攻破结构体-C语言
  3. bow 折叠键盘 linux,bow便携折叠蓝牙键盘体验
  4. 教程和攻略之悪戯極~いたずらリアル~(3D电车监禁)+初回特典
  5. sql语句 case_使用SQL Case语句查询数据
  6. Android.mk 使用 环境 小结
  7. 分布式、微服务与集群的区别
  8. kettle中Pan kitchen用法及bat写法
  9. DeepFake技术--fakeapp, faceswap, deepfacelab等deepfakes换脸程序的简单对比
  10. 无路可逃java攻略_《生化危机2:重制版》幽灵生还者无路可逃流程攻略
  11. 【Linux】区分Ubuntu桌面版本和服务器版本
  12. 微信小程序:map组件所在页面加载慢,长时间白屏的问题
  13. 深入理解Java7.pdf
  14. 用python实现过滤存在大部分空白背景的图片
  15. 如何看linux版本
  16. 2016年中国安防系统集成商发展状况如何?
  17. Soft-Clipping Swish激活函数
  18. 配置git send-mail发邮件 (126邮箱适用)
  19. 行人检测0-05:LFFD-行人训练数据制作以及训练
  20. swoft学习笔记之request请求

热门文章

  1. 一个软件开发工程师选择C++的自述
  2. WinMount V2.2.2, 日期2008.02.29
  3. emplace_back与push_back异同
  4. 【特别推荐】精心挑选的6款优秀的 jQuery 视差滚动效果插件
  5. html中如何让背景图片填充整个图片
  6. 在应用程序级别以外使用注册为 allowDefinition='MachineToApplication' 的节是错误的解决办法
  7. 解决 docker exec 报错 Error response from daemon: Container XXXXX is not running
  8. NewStar week3
  9. 《通信原理》课后题 樊昌信
  10. 反向不归零码NRZI